crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> custom FileDialog, как заменить Model?
zamnach
  опции профиля:
сообщение 23.10.2009, 11:49
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 36
Регистрация: 18.7.2008
Пользователь №: 239

Спасибо сказали: 0 раз(а)




Репутация:   0  


имется задача: написать свой FileDialog (максимально повторяющий функционал стандартного QFileDialog).
Но у FileDialog должны быть особенности:
1. Запрет перехода "вверх"/"вниз" по заданным правилам (решено)
2. Свои правила отображения файлов и папок - показывать только те файлы/папки, которые удовлетворяют заданным правилам.
Идея решения: унаследоваться от QFileDialog и "обработать его напильником".
Для реализации правил фильтрации файлов/папок предполагается подменить model в QFileDialog.
Внимание, вопрос: Как подменить модель на другую (для начала - на стандартную)?
Ниже приведен пример моего кода (некорректного) из-за которого код "квасится" при инициализации диалога.
Раскрывающийся текст
    // МОДЕЛЬ
    QWidget * widgetTV = this->findChild<QWidget *>("treeView");
    QWidget * widgetLV = this->findChild<QWidget *>("listView");
    if( ( widgetTV != NULL) && ( widgetLV != NULL ) )
    {
        QDirModel model;
        QTreeView *tv = dynamic_cast<QTreeView*>(widgetTV);
        QListView *lv = dynamic_cast<QListView*>(widgetLV);
        if( ( tv!=NULL ) && ( lv!=NULL ) )
        {
            tv->setModel(&model);
            lv->setModel(&model);
        }
    }

Предполагаю, что надо "проинициализировать" новую модель.
Как настроить новую модель?
Спасибо.

Сообщение отредактировал zamnach - 23.10.2009, 11:50
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 23.10.2009, 11:55
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Хочу сразу заметить, что в стандартном QFileDialog имеются прорехи: по каким-то причинам он зависает при неисправной сети, если это не лабораторная или курсовая работа, то лучше это учесть и использовать функции ОС. Понимаю, что это менее удобно, но иначе будут проблемы, если есть проблемы с сетью. Или же постараться обнаружить эту ошибку в QFileDialog (я этим пока не занимался, слишком много более важной работы.)

Сообщение отредактировал AD - 23.10.2009, 12:01
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
molchanoviv
  опции профиля:
сообщение 25.10.2009, 9:42
Сообщение #3


Старейший участник
****

Группа: Сомодератор
Сообщений: 597
Регистрация: 18.7.2008
Из: Саратов
Пользователь №: 238

Спасибо сказали: 41 раз(а)




Репутация:   5  


Цитата
по каким-то причинам он зависает при неисправной сети

Такое-же поведение наблюдается и у родного виндового диалога. А вот в КДЕ-шном диалоге(Линукс) у меня такого не происходило.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 25.10.2009, 12:39
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Цитата(molchanoviv @ 25.10.2009, 9:42) *
Такое-же поведение наблюдается и у родного виндового диалога. А вот в КДЕ-шном диалоге(Линукс) у меня такого не происходило.

Не знаю, почему у тебя в родном виндовом зависает. У меня не зависает родной виндовый диалог
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 25.10.2009, 22:04
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Цитата(AD @ 25.10.2009, 13:39) *
Цитата(molchanoviv @ 25.10.2009, 9:42) *
Такое-же поведение наблюдается и у родного виндового диалога. А вот в КДЕ-шном диалоге(Линукс) у меня такого не происходило.

Не знаю, почему у тебя в родном виндовом зависает. У меня не зависает родной виндовый диалог


С момента обнаружения этого факта было ли принято что-нибудь, чтобы разработчики устранили данную проблему?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 25.10.2009, 22:41
Сообщение #6


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Цитата(SABROG @ 25.10.2009, 22:04) *
С момента обнаружения этого факта было ли принято что-нибудь, чтобы разработчики устранили данную проблему?

Ага. Начал копать... Дошел до какой-то стадии, потом бросил - слишком много прочей работы. Результаты раскопок есть на форуме prog.org
http://www.prog.org.ru/topic_10757_0.html
Будет время обязательно поищу... Пока совсем не до этого! :(
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 25.10.2009, 23:57
Сообщение #7


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Прекращайте трёп.
Тема называется "custom FileDialog, как заменить Model?"
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.3.2024, 22:31