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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: QComboBox::setItemDelegate - на смену стиля сбрасывается на QComboBoxDelegate  (Прочитано 13509 раз)
spectre71
Гость
« : Июнь 19, 2009, 17:45 »

Сделал свой делегат для QComboBox, установил. Все отлично рисует что надо.
Меняю стиль приложения - рисует по умолчанию.
Смотрю в дебагере текущий QComboBox::itemDelegate - выдает QComboBoxDelegate.
В чем прикол? Что с этим делать?
Записан
Rcus
Гость
« Ответ #1 : Июнь 19, 2009, 18:29 »

Ага, есть такое:
Код
C++ (Qt)
void QComboBox::changeEvent(QEvent *e)
{
   Q_D(QComboBox);
   switch (e->type()) {
   case QEvent::StyleChange:
       d->updateDelegate();
...
 
 
void QComboBoxPrivate::updateDelegate()
{
   Q_Q(QComboBox);
   QStyleOptionComboBox opt;
   q->initStyleOption(&opt);
   if (q->style()->styleHint(QStyle::SH_ComboBox_Popup, &opt, q))
       q->setItemDelegate(new QComboMenuDelegate(q->view(), q));
   else
       q->setItemDelegate(new QComboBoxDelegate(q->view(), q));
}
Что с этим делать? Ну можно повесить фильтр на комбобокс, который будет восстанавливать делегат при смене стиля, возможно можно еще как-то это обойти не меняя код Qt.
Записан
spectre71
Гость
« Ответ #2 : Июнь 19, 2009, 18:30 »

Пака что на changeEvent (QEvent* event);  if(event->type() == QEvent::StyleChange)
заново устанавливаю делегат. Но это какой-то бред.
Записан
ритт
Гость
« Ответ #3 : Июнь 19, 2009, 22:17 »

действительно, бред.
рапортуй троллям, номер таски сюда...
Записан
spectre71
Гость
« Ответ #4 : Июнь 19, 2009, 22:34 »

действительно, бред.
рапортуй троллям, номер таски сюда...

Я б с удольствием рапортировал и не только об этом:
- Ни разу этого не делал
- И самое главное мой "English is very bad", читать я еще могу, но писать Непонимающий

Хорошо бы завести ветку, куда можно было бы заносить баги, фичи, недоработки, пожелания,... QT(последней версии)
После проверок, знающие люди, хорошо владеющие английским рапортовали бы троллям!
Подумай насчет этого!

Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #5 : Июнь 19, 2009, 23:21 »

Хорошо бы завести ветку, куда можно было бы заносить баги, фичи, недоработки, пожелания,... QT(последней версии)
После проверок, знающие люди, хорошо владеющие английским рапортовали бы троллям!

Создавай топик, указывай версию Qt, платформу, компиль, компилябельный пример для воспроизведения бага, пошаговое описание как воспроизвести. Будем репортовать.
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
ритт
Гость
« Ответ #6 : Июнь 20, 2009, 00:13 »

Хорошо бы завести ветку, куда можно было бы заносить баги, фичи, недоработки, пожелания,... QT(последней версии)
После проверок, знающие люди, хорошо владеющие английским рапортовали бы троллям!
топик уже как бы создан Улыбающийся
кроме минимального компилябельного примера в данном случае ничего более не требуется.
лично я рапортовать не буду - мне быстрее мерж реквист написать Улыбающийся

Создавай топик, указывай версию Qt, платформу, компиль, компилябельный пример для воспроизведения бага, пошаговое описание как воспроизвести. Будем репортовать.
Записан
spectre71
Гость
« Ответ #7 : Июнь 20, 2009, 00:41 »

По хорошему это должен быть не топик, а раздел со своими правилами.
Я, например, не имею представления где это находится.
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #8 : Июнь 20, 2009, 08:09 »

Цитировать
топик уже как бы создан Улыбающийся
кроме минимального компилябельного примера в данном случае ничего более не требуется.

Я имел ввиду отдельный топик, например в разделе Общие вопросы, с название, ну хз, "Баги в Qt". А целый раздел под это, хз, сильно жирно. Не так у много проскакивает тем с просьбой баг репорта.

Цитировать
кроме минимального компилябельного примера в данном случае ничего более не требуется.

Как это не требуется? А знать какая версия Qt? А платформа? etc


Я отрапортовать могу через саппорт (есть лицензия).
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
ритт
Гость
« Ответ #9 : Июнь 20, 2009, 08:56 »

http://qt.gitorious.org/qt/qt/blobs/master/src/gui/widgets/qcombobox.cpp [1592..1611]
Цитировать
1592   /*! \internal
1593       update the default delegate
1594       depending on the style's SH_ComboBox_Popup hint, we use a different default delegate.
1595   
1596       but we do not change the delegate is the combobox use a custom delegate,
1597       unless \a force is set to true.
1598    */
1599   void QComboBoxPrivate::updateDelegate(bool force)
1600   {
1601       Q_Q(QComboBox);
1602       QStyleOptionComboBox opt;
1603       q->initStyleOption(&opt);
1604       if (q->style()->styleHint(QStyle::SH_ComboBox_Popup, &opt, q)) {
1605           if (force || qobject_cast<QComboBoxDelegate *>(q->itemDelegate()))
1606               q->setItemDelegate(new QComboMenuDelegate(q->view(), q));
1607       } else {
1608           if (force || qobject_cast<QComboMenuDelegate *>(q->itemDelegate()))
1609               q->setItemDelegate(new QComboBoxDelegate(q->view(), q));
1610       }
1611   }
полагаю, заинтересует комментарий...
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #10 : Июнь 20, 2009, 10:39 »

Насчет багов  - предлагаю вам обменяться асками/скайпами. Сам находил тока один баг в QT, да и тот незначительный - но похоже до сих пор не исправленный)
Сам английский тока читать могу, писать нет. Пользуюсь тока стабильными вариантами, типа текущий -1, наверно по этому и мало багов находил  Смеющийся.
Записан
spectre71
Гость
« Ответ #11 : Июнь 20, 2009, 12:09 »

Я имел ввиду отдельный топик, например в разделе Общие вопросы, с название, ну хз, "Баги в Qt". А целый раздел под это, хз, сильно жирно. Не так у много проскакивает тем с просьбой баг репорта.

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

Это так, набросок. Но, раздел точно нужен. А структуру и политику работы с ним можно обсуждать.
Есть к примеру целый раздел "Обьявления", который очень редко полезен, но он существует

Как вариант можно расширить раздел "Вклад Сообщества в Qt" создав в нем нужную структуру подразделов.

Админы, перенесите этот топик куда нужно. Уже слишком много сообщений не по теме.
« Последнее редактирование: Июнь 20, 2009, 12:11 от spectre71 » Записан
ритт
Гость
« Ответ #12 : Июнь 20, 2009, 19:21 »

такой раздел точно не нужен. топик во "вкладе" можно выделить...

Admin, на примере 4.5.1 (текущий) vs 4.5.0 (текущий -1) - текущий куда стабильнее...
Записан
Rcus
Гость
« Ответ #13 : Июнь 20, 2009, 21:12 »

Может имеются ввиду минорные релизы? В одном релизе то нет смысла сидеть на младшей версии после выхода патча Улыбающийся
Записан
spectre71
Гость
« Ответ #14 : Июнь 20, 2009, 21:46 »

такой раздел точно не нужен. топик во "вкладе" можно выделить...

Извини, но я не согласен. Просто выделение затеряется.
Любая система, в том числе и форум требует поддержки и развития.
То что багов мало - это тоже не верно. Я за пол года работы с QT наткнулся на добрый десяток, точно. Еще больше фич - недоработок, концептуальных ошибок(или багов?). Но, к примеру, у меня проект достаточно большой и я не могу зависать на каждой проблеме долго, просто ищу обходные пути, и через какое-то время большинство приколов библиотеки успешно забывается.
Я уже говорил что раздел типа "Обьявления" или "Говорилка", "Юмор" - конечно прикольно, но току мало! А данный раздел весьма полезен.

Но вы Админы, и вам решать!
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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