Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: spectre71 от Июнь 19, 2009, 17:45



Название: QComboBox::setItemDelegate - на смену стиля сбрасывается на QComboBoxDelegate
Отправлено: spectre71 от Июнь 19, 2009, 17:45
Сделал свой делегат для QComboBox, установил. Все отлично рисует что надо.
Меняю стиль приложения - рисует по умолчанию.
Смотрю в дебагере текущий QComboBox::itemDelegate - выдает QComboBoxDelegate.
В чем прикол? Что с этим делать?


Название: Re: QComboBox::setItemDelegate - на смену стиля сбрасывается на QComboBoxDelegate
Отправлено: Rcus от Июнь 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.


Название: Re: QComboBox::setItemDelegate - на смену стиля сбрасывается на QComboBoxDelegate
Отправлено: spectre71 от Июнь 19, 2009, 18:30
Пака что на changeEvent (QEvent* event);  if(event->type() == QEvent::StyleChange)
заново устанавливаю делегат. Но это какой-то бред.


Название: Re: QComboBox::setItemDelegate - на смену стиля сбрасывается на QComboBoxDelegate
Отправлено: ритт от Июнь 19, 2009, 22:17
действительно, бред.
рапортуй троллям, номер таски сюда...


Название: Re: QComboBox::setItemDelegate - на смену стиля сбрасывается на QComboBoxDelegate
Отправлено: spectre71 от Июнь 19, 2009, 22:34
действительно, бред.
рапортуй троллям, номер таски сюда...

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

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



Название: Re: QComboBox::setItemDelegate - на смену стиля сбрасывается на QComboBoxDelegate
Отправлено: pastor от Июнь 19, 2009, 23:21
Хорошо бы завести ветку, куда можно было бы заносить баги, фичи, недоработки, пожелания,... QT(последней версии)
После проверок, знающие люди, хорошо владеющие английским рапортовали бы троллям!

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


Название: Re: QComboBox::setItemDelegate - на смену стиля сбрасывается на QComboBoxDelegate
Отправлено: ритт от Июнь 20, 2009, 00:13
Хорошо бы завести ветку, куда можно было бы заносить баги, фичи, недоработки, пожелания,... QT(последней версии)
После проверок, знающие люди, хорошо владеющие английским рапортовали бы троллям!
топик уже как бы создан :)
кроме минимального компилябельного примера в данном случае ничего более не требуется.
лично я рапортовать не буду - мне быстрее мерж реквист написать :)

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


Название: Re: QComboBox::setItemDelegate - на смену стиля сбрасывается на QComboBoxDelegate
Отправлено: spectre71 от Июнь 20, 2009, 00:41
По хорошему это должен быть не топик, а раздел со своими правилами.
Я, например, не имею представления где это находится.


Название: Re: QComboBox::setItemDelegate - на смену стиля сбрасывается на QComboBoxDelegate
Отправлено: pastor от Июнь 20, 2009, 08:09
Цитировать
топик уже как бы создан Улыбающийся
кроме минимального компилябельного примера в данном случае ничего более не требуется.

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

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

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


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


Название: Re: QComboBox::setItemDelegate - на смену стиля сбрасывается на QComboBoxDelegate
Отправлено: ритт от Июнь 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   }
полагаю, заинтересует комментарий...


Название: Re: QComboBox::setItemDelegate - на смену стиля сбрасывается на QComboBoxDelegate
Отправлено: Admin от Июнь 20, 2009, 10:39
Насчет багов  - предлагаю вам обменяться асками/скайпами. Сам находил тока один баг в QT, да и тот незначительный - но похоже до сих пор не исправленный)
Сам английский тока читать могу, писать нет. Пользуюсь тока стабильными вариантами, типа текущий -1, наверно по этому и мало багов находил  ;D.


Название: Re: QComboBox::setItemDelegate - на смену стиля сбрасывается на QComboBoxDelegate
Отправлено: spectre71 от Июнь 20, 2009, 12:09
Я имел ввиду отдельный топик, например в разделе Общие вопросы, с название, ну хз, "Баги в Qt". А целый раздел под это, хз, сильно жирно. Не так у много проскакивает тем с просьбой баг репорта.

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

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

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

Админы, перенесите этот топик куда нужно. Уже слишком много сообщений не по теме.


Название: Re: QComboBox::setItemDelegate - на смену стиля сбрасывается на QComboBoxDelegate
Отправлено: ритт от Июнь 20, 2009, 19:21
такой раздел точно не нужен. топик во "вкладе" можно выделить...

Admin, на примере 4.5.1 (текущий) vs 4.5.0 (текущий -1) - текущий куда стабильнее...


Название: Re: QComboBox::setItemDelegate - на смену стиля сбрасывается на QComboBoxDelegate
Отправлено: Rcus от Июнь 20, 2009, 21:12
Может имеются ввиду минорные релизы? В одном релизе то нет смысла сидеть на младшей версии после выхода патча :)


Название: Re: QComboBox::setItemDelegate - на смену стиля сбрасывается на QComboBoxDelegate
Отправлено: spectre71 от Июнь 20, 2009, 21:46
такой раздел точно не нужен. топик во "вкладе" можно выделить...

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

Но вы Админы, и вам решать!


Название: Re: QComboBox::setItemDelegate - на смену стиля сбрасывается на QComboBoxDelegate
Отправлено: ритт от Июнь 20, 2009, 22:18
такой раздел точно не нужен. топик во "вкладе" можно выделить...

Извини, но я не согласен. Просто выделение затеряется.
извиняю )
топик можно приколоть наверху - и никуда он не потеряется...но если Pastor даст добро на отдельный раздел, то и я против не буду...

То что багов мало - это тоже не верно. Я за пол года работы с QT наткнулся на добрый десяток, точно.
везучий :)
из-за специфики текущей задачи я сейчас в неделю до десятка багов разной сложности нахожу ))


Название: Re: QComboBox::setItemDelegate - на смену стиля сбрасывается на QComboBoxDelegate
Отправлено: spectre71 от Июнь 20, 2009, 22:31
Может и гораздо больше! Но я работаю с QT всего пол-года и мне пока не всегда ясно толи баг, толи фича, толи кто-то когда писал маялся с похмелья :), так что к багам я отношу явные баги, кстати сбрасывание делегата я скорее относил к фиче, недокументированной.
Последнее неприятное, что обнаружил сегодня, есть различие в механизме "resize" для разных стилей.

Много приколотых :) топиков мешает.


Название: Re: QComboBox::setItemDelegate - на смену стиля сбрасывается на QComboBoxDelegate
Отправлено: ритт от Июнь 20, 2009, 23:23
тогда жди решения пастора


Название: Re: QComboBox::setItemDelegate - на смену стиля сбрасывается на QComboBoxDelegate
Отправлено: pastor от Июнь 21, 2009, 16:13
тогда жди решения пастора

о, а я тут причем? :) Свое мнение я высказал, помощь по отправке репортов я предложил.

По поводу отдельного раздела: Его же новички сразу захламят топиками про "баги". На форуме по несколько тем в день есть о неправильном поведении Qt. И где будут создаваться такие темы? Думаю ответ ясен. И никто их этих топик-спикеров небудет оформлять тему надлежащим образом, информацию из них нужно будет выколачивать.


Название: Re: QComboBox::setItemDelegate - на смену стиля сбрасывается на QComboBoxDelegate
Отправлено: spectre71 от Июнь 22, 2009, 07:24
По поводу отдельного раздела: Его же новички сразу захламят топиками про "баги". На форуме по несколько тем в день есть о неправильном поведении Qt. И где будут создаваться такие темы? Думаю ответ ясен. И никто их этих топик-спикеров небудет оформлять тему надлежащим образом, информацию из них нужно будет выколачивать.
Для этого я и предложил подраздел мусорка, куда и писали бы все кому не лень и обсуждали.
А в разделе "Провереннные" создавать темы нельзя, только переносить нужные из мусорки, админами(или еще кем).
Мусорку можно периодически чистить, это можно указать в правилах.


Название: Re: QComboBox::setItemDelegate - на смену стиля сбрасывается на QComboBoxDelegate
Отправлено: ритт от Июнь 22, 2009, 07:39
1. насколько я помню, smf не поддерживает подразделы
2. лично я не согласен провести лучшие годы жизни перекладывая сомнительные темы в мусор/из мусора

зы. в русском языке нет слова "мусорка"


Название: Re: QComboBox::setItemDelegate - на смену стиля сбрасывается на QComboBoxDelegate
Отправлено: spectre71 от Июнь 22, 2009, 08:33
1) Подразделы есть, например в разделах "Архив", "Компиляторы"
2) А и не надо тратить годы жизни. Не думаю что темы будут часто перемещаться, и думаю что сделать это просто.
С другой стороны в форуме мы читаем много полезного и бесполезного и этого так и так не избежишь. И если какая-то тема окажется полезной, можно и перенести.
Ну пусть будет не мусорка, а  "Общий" и ("Актуальные" или "Проверенные" или "Избранные" - как назвать, вариантов много).


Название: Re: QComboBox::setItemDelegate - на смену стиля сбрасывается на QComboBoxDelegate
Отправлено: ритт от Июнь 22, 2009, 09:21
1. это темы и тематические разделы, а не разделы и подразделы. отдельную тему для "багов" - это слишком.

итого: всё остаётся по-прежнему. тема треда исчерпана.


Название: Re: QComboBox::setItemDelegate - на смену стиля сбрасывается на QComboBoxDelegate
Отправлено: ритт от Июнь 25, 2009, 15:34
http://www.qtsoftware.com/developer/changes/changes-4.5.2
Цитировать
- QComboBox
   * [253944] Changing the style doesn't reset custom item delegate anymore.