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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Статичный текст заголовка (поле со стрелкой) QComboBox  (Прочитано 4545 раз)
Alexander_57
Гость
« : Сентябрь 03, 2011, 18:17 »

Добрый вечер!
Скажите пожалуйста можно ли сделать текст в заголовке (поле со стрелкой) у QComboBox-a статичным и неизменным при выборе элемента из списка?

Я создал QComboBox в который в качестве модели установил QStandardItemModel, а в качестве представления - QTreeView. Элементы в структуре имеют переключатели (Checkable). Так вот созданные мною виджет представляет собой выпадающее окно, в котором выбираются регионы проживания. Поэтому в заголовке кнопки ничего не должно показываться, кроме статического текста "Выбор региона".
Записан
NicK
Гость
« Ответ #1 : Сентябрь 05, 2011, 10:30 »

почему бы просто не поместить combobox на frame с нужным заголовком?  Улыбающийся
Записан
Alexander_57
Гость
« Ответ #2 : Сентябрь 05, 2011, 14:10 »

Как это?
Суть создаваемого виджета: нажимаем на кнопку QComboBox, выбираем необходимые регионы.
Вариант использования:
1. Разворачиваем QComboBox.
2. Выбираем (устанавливаем галочки) города Москва, Санкт-Петербург, Новосибирск.
3. Закрываем QComboBox. В заголовке стоит Новосибирск (так как он выбирался последним). ТАК БЫТЬ НЕ ДОЛЖНО  Обеспокоенный
Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #3 : Сентябрь 05, 2011, 14:23 »

ТАК БЫТЬ НЕ ДОЛЖНО  Обеспокоенный
Так как вы описали тоже быть не должно.
Если я пользуюсь программой выбираю пункты, а в итоге так и останется "Выбор региона", я решу, что ничего не выбралось. В идеале (на мой взгляд) отображаемое значение QComboBox-a должно стать «Москва, Санкт-Петербург, Новосибирск».
Реализацию не подскажу, извините.
Записан
Alexander_57
Гость
« Ответ #4 : Сентябрь 05, 2011, 15:09 »

После выбора регионов их список появляется под QComboBox-м. В заголовке их перечислять нельзя (если пользователь выберет большое количество регионов, то их надписи не поместятся в заголовке).
Во вложениях скриншоты того, что я бы хотел создать.
Записан
_OLEGator_
Гость
« Ответ #5 : Сентябрь 06, 2011, 11:07 »

Делайте обычной кнопкой, по нажатии на которую показывайте вьюху дерева popup-окном.
Записан
Kolobok
Гость
« Ответ #6 : Сентябрь 06, 2011, 12:32 »

Наследуйся от QComboBox и переопредели initStyleOption(...).
Записан
Alexander_57
Гость
« Ответ #7 : Сентябрь 06, 2011, 15:56 »

_OLEGator_ и Kolobok большущее спасибо. Оба варианта верные.
Вот как я сделал. Переопределил paintEvent в QComboBox-е.

// Переопределение стандартного метода (перерисовка элемента)
void paintEvent(QPaintEvent *a_pPaintEvent)
{
   QStylePainter StylePainter(this);
   QStyleOptionComboBox StyleOptionComboBox;
   initStyleOption(&StyleOptionComboBox);
   StylePainter.drawComplexControl(QStyle::CC_ComboBox, StyleOptionComboBox);
   StyleOptionComboBox.currentText = "Выбор регионов";
   StylePainter.drawControl(QStyle::CE_ComboBoxLabel, StyleOptionComboBox);
}
Записан
Kolobok
Гость
« Ответ #8 : Сентябрь 07, 2011, 12:04 »

Правильнее переопределить initStyleOption. А так sizeHint может неправильно работать.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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