Название: popup у QComboBox Отправлено: crossly от Март 21, 2007, 20:12 Как изменить размер?..... К примеру сделать шыре чем сам бокс....
Название: popup у QComboBox Отправлено: Racheengel от Март 22, 2007, 00:17 Буквально пару дней назад делал такое...
Отнаследуйся и переопредели showPopup(): void MYComboBox::showPopup() { QComboBox::showPopup(); // let's find container among the children const QObjectList &kids = children(); for (int i = 0; i < kids.count(); i++) { QFrame *fr = dynamic_cast<QFrame*>(kids.at(i)); if (fr) { QRect r = fr->geometry(); // в r у тебя размер выпадаюшего списка... делай тут с ним чо хочешь... fr->setGeometry(r); break; } } } Название: Re: popup у QComboBox Отправлено: _govorilka от Март 22, 2007, 04:08 Цитата: "crossly" Как изменить размер?..... К примеру сделать шыре чем сам бокс.... В 4.2.0 есть специальный метод setPopupWidget (точное название не помню, поищи в справке). Этим методом устанавливается Widget, который будет отображаться вместо попапа... Ну, а дальше дело техники. Название: popup у QComboBox Отправлено: crossly от Март 22, 2007, 14:25 спасибо други...:)
Название: popup у QComboBox Отправлено: VZ от Май 15, 2007, 11:25 Опыты показали, что цикл по child-ам не нужен, достаточно взять
QFrame *fr = dynamic_cast<QFrame*>(view()->parent()); только это как-то некрасиво - сначала рисуется узкий popup, а потом он становится шире. Название: popup у QComboBox Отправлено: Emc от Май 15, 2007, 11:41 не очень красиво - но зато размер как надо
QPushButton* buttonCombo = new QPushButton(); buttonCombo->setMenu(menu); Название: popup у QComboBox Отправлено: Gryz от Май 16, 2007, 10:54 После лазания по исходникам, у меня получился такой класс:
добавлено спустя 36 секунд: Код: class BugFixComboBox: public QComboBox { Название: popup у QComboBox Отправлено: Racheengel от Май 16, 2007, 11:42 а как получилось QComboBoxPrivate вытащить???
Qt патчил? Название: popup у QComboBox Отправлено: Gryz от Май 16, 2007, 13:04 Qt не патчил.
достаточно добавить инклуд #include <private/qcombobox_p.h> Название: popup у QComboBox Отправлено: Racheengel от Май 16, 2007, 13:47 у меня такое не работало - как раз на d_ptr ругалось...
помню, сам хотел через QComboBoxPrivate делать. Название: popup у QComboBox Отправлено: Gryz от Май 16, 2007, 14:14 как конкретно ругалось?
Название: popup у QComboBox Отправлено: Gryz от Июль 23, 2007, 18:51 Снова вернулся к проблеме. Поясняю по поводу d_ptr.
У QComboBoxPrivate все члены открытые. Остается получить доступ к нему доступ. Метод QComboBox d_func() нам не подходит - он закрытый. Зато член d_ptr - это защищенный член QObject, который мы можем использовать. Надо только написать функцию аналогичную d_func() В примере выше используется не функйция, а сразу приведение: reinterpret_cast<QComboBoxPrivate *>(d_ptr); Вот и все. Осталось заинклудить <private/qcombobox_p.h> и можно проводить тонкую настройку QComboBox. Надо только учитывать, что от версии к версии содежимое закрытого заголовочного файла может неожиданно измениться. |