Russian Qt Forum
Ноябрь 25, 2024, 14:29 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2] 3   Вниз
  Печать  
Автор Тема: QTreeWidget  (Прочитано 15142 раз)
crossly
Гость
« Ответ #15 : Август 20, 2010, 14:08 »

Согласен, QTreeView покруче будет, но мне не нравиться у него вид, как его можно изменить и вообще можно ли это? Мне нужно что бы не ввиде дерева была, а ввиде подробного списка.

послушайте... вы перед тем как постить документацию читать пробовали... ?? по вопросу... setRootIsDecorated(false)
Записан
kadr
Гость
« Ответ #16 : Август 20, 2010, 15:28 »

Согласен, QTreeView покруче будет, но мне не нравиться у него вид, как его можно изменить и вообще можно ли это? Мне нужно что бы не ввиде дерева была, а ввиде подробного списка.

послушайте... вы перед тем как постить документацию читать пробовали... ?? по вопросу... setRootIsDecorated(false)
Да спасибо, я уже нашел как сделать.
Помоги разобраться с этим куском кода, почему то при выполнении его возникает ошибка и приложение закрывается.
Код:
if (event->type() == QEvent::KeyPress)
         {
             //QDir dir;
             QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event);
             QFileSystemModel *model = new QFileSystemModel;
             if (keyEvent->key()==Qt::Key_Return)
             {

                 if(model->fileInfo(ui->left_pole->currentIndex()).isFile())
                    {
                        return false;
                    }
                 else
                    {
                        left_pole_update(ui->left_pole->currentIndex());

                    }
             }
         }

Код:
ASSERT: "index.model() == q" in file dialogs\qfilesystemmodel.cpp, line 1270
Invalid parameter passed to C runtime function.
Invalid parameter passed to C runtime function.
« Последнее редактирование: Август 20, 2010, 15:31 от kadr » Записан
crossly
Гость
« Ответ #17 : Август 20, 2010, 16:02 »

что вы пытаетесь сделать объясните...

PS: что касается кода... он заработает только при оч удачном расположении звезд на небе....
« Последнее редактирование: Август 20, 2010, 16:05 от crossly » Записан
kadr
Гость
« Ответ #18 : Август 22, 2010, 14:51 »

я отлавливаю нажатие кнопки enter и затем проверяю, является ли текущая строка, а точнее содержимое текущего итема, папкой или файлом, если файл, то выйте из функции, иначе зайти в текущую директорию.
Код:
bool MainWindow::eventFilter(QObject *obj, QEvent *event)
 {
if (event->type() == QEvent::KeyPress)
         {
             //QDir dir;
             QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event);
             QFileSystemModel *model = new QFileSystemModel;
             if (keyEvent->key()==Qt::Key_Return)
             {

                 if(model->fileInfo(ui->left_pole->currentIndex()).isFile())
                    {
                        return false;
                    }
                 else
                    {
                        left_pole_update(ui->left_pole->currentIndex());

                    }
             }
         }



return QMainWindow::eventFilter(obj, event);

 }
 
« Последнее редактирование: Август 22, 2010, 14:55 от kadr » Записан
crossly
Гость
« Ответ #19 : Август 22, 2010, 15:01 »

во первых .... вы создаете в фильтре новую модель... которая абсолютно никакого отношения к вашей модели и вью не имеет.... я так полагаю это и есть источник сегфолта... во вторых не проще ли воспользоваться сигналом activated... и в третьих... воспользоваться все же моим советом и начать читать документацию... Улыбающийся
Записан
kadr
Гость
« Ответ #20 : Август 22, 2010, 16:08 »

во первых .... вы создаете в фильтре новую модель... которая абсолютно никакого отношения к вашей модели и вью не имеет.... я так полагаю это и есть источник сегфолта... во вторых не проще ли воспользоваться сигналом activated... и в третьих... воспользоваться все же моим советом и начать читать документацию... Улыбающийся
Хорошо, спасибо за совет!
Записан
kadr
Гость
« Ответ #21 : Август 23, 2010, 15:04 »

Я так и не услышал ответ на вопрос- как мне определить, как из 2 QTreeView в данный момент активен, поясняю:
Есть 2 TreeView, перход между ними осуществляется табом и кликом мыши, так же есть кнопка при нажатии на которую должно происходить следующее, берется полный путь текущей записи, в моем случае это текстовый файл, и открывается в блокноте.Так то все работет, но файл открывается постоянно один и тотже из первого TreeView-а. Как мне определить в каком TreeView-е сейчас находиться курсор?
 
Код:
QItemSelectionModel *selectionModel = view->selectionModel();
    QModelIndexList indexes = selectionModel->selectedIndexes(); // или selectedRows
    foreach(QModelIndex index, indexes) {
        qDebug() << model->filePath(index); // печатаем выделенные файлы
    }
    selectionModel->clear();
    QModelIndex index = model->index("/"); // индекс корня в линупсе
    selectionModel->select(index); // выделен рут
Этот код не катит, он показывает какие строки выбраны в определеном TreeView-е, а мне надо другое!
Записан
crossly
Гость
« Ответ #22 : Август 23, 2010, 15:06 »

hasFocus()
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #23 : Август 23, 2010, 15:12 »

QApplication::focusWidget
Записан
kadr
Гость
« Ответ #24 : Август 23, 2010, 15:44 »

hasFocus()
Вот спасибо!
Записан
crossly
Гость
« Ответ #25 : Август 23, 2010, 16:19 »

и опять же... документация...
Записан
kadr
Гость
« Ответ #26 : Август 24, 2010, 09:11 »

помогите разобраться, хочу создать новую папку и не пойму что ему надо.
mkdir ( const QModelIndex & parent, const QString & name )

Код:
model_l->mkdir(?,filename);
Я так понял что ему нужно указать родителя, а как указать не пойму.
У меня есть QTreeView - ui->left_pole
QFileSystemModel *model_l;

В справке ничего толком нет, в инете тоже ничего не нашел!
Записан
crossly
Гость
« Ответ #27 : Август 24, 2010, 09:23 »

ну если в справке нету... то нам откуда знать... Улыбающийся)... читайте книги товарисч... я бы на вашем месте начал с c++... потом потиху Бланшета, Шлее
Записан
kadr
Гость
« Ответ #28 : Август 24, 2010, 09:28 »

Спсб!
Записан
crossly
Гость
« Ответ #29 : Август 24, 2010, 09:35 »

ну а вообще если хотите посмотреть на эффект... попробуйте ui->left_pole->currentIndex() или ui->left_pole->currentIndex()->parent() к примеру... желательно их конечно же на валидность проверить...
Записан
Страниц: 1 [2] 3   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.053 секунд. Запросов: 23.