Название: Стилизация QCombobox Отправлено: WereWind от Июнь 16, 2016, 17:16 Досталась мне программа с QComboBox, Это почти обычный комбобокс, но с галочкой напротив текущего выбранного элемента. Галочка появляется в убунте от вот этого стайлшита
Код: QComboBox{ Нужно сделать элементы выпадающего меню покрупнее. Я прицепил QStyledItemDelegate с перегруженным sizeHint. Код: QSize CComboBoxPopupItemDelegate::sizeHint(const QStyleOptionViewItem&, const QModelIndex &) const { Код: combo_box_->view()->setItemDelegate(new CComboBoxPopupItemDelegate(this)); Элементы увеличились, но из них пропала галочка отвалилась раскраска - у них теперь дефолтный цвет окна. Как лучше всего и элементы увеличить и галочку сохранить? Название: Re: Стилизация QCombobox Отправлено: Bepec от Июнь 16, 2016, 20:17 Стиль и QSS - это взаимозаменяемые вещи, но пользоваться ты можешь только одной из них.
Название: Re: Стилизация QCombobox Отправлено: Racheengel от Июнь 16, 2016, 23:08 Кастомной отрисовкой разве что... Галочка для комбобокса - вещь не типичная..
Название: Re: Стилизация QCombobox Отправлено: GreatSnake от Июнь 17, 2016, 11:19 Стиль и QSS - это взаимозаменяемые вещи, но пользоваться ты можешь только одной из них. С чего это ???Название: Re: Стилизация QCombobox Отправлено: Racheengel от Июнь 17, 2016, 11:19 Стиль и QSS - это взаимозаменяемые вещи, но пользоваться ты можешь только одной из них. Я бы сказал, взаимоисключающие :) Название: Re: Стилизация QCombobox Отправлено: Old от Июнь 17, 2016, 11:31 Я бы сказал, взаимоисключающие :) Да почему? :)Название: Re: Стилизация QCombobox Отправлено: Racheengel от Июнь 17, 2016, 11:42 А Вы попробуйте застайлить приложение стайлшитами, если там кастомные виджеты используются :) И чтобы добиться одинакового вида на всех платформах :) Название: Re: Стилизация QCombobox Отправлено: Old от Июнь 17, 2016, 11:58 А Вы попробуйте застайлить приложение стайлшитами, если там кастомные виджеты используются :) Так пишите правильно кастомные виджеты, что бы они использовали данные из stylesheet. :)И чтобы добиться одинакового вида на всех платформах :) P.S. Хотя признаю, там квесты еще те, и не хватает возможности задавать свои флаги в stylesheet. ;) Название: Re: Стилизация QCombobox Отправлено: Racheengel от Июнь 17, 2016, 12:04 Так пишите правильно кастомные виджеты, что бы они использовали данные из stylesheet. :) А как может кастомный виджет получить "правильный" доступ к stylesheet? Он его самостоятельно парсить должен, что ли? :) Название: Re: Стилизация QCombobox Отправлено: GreatSnake от Июнь 17, 2016, 12:12 А Вы попробуйте застайлить приложение стайлшитами, если там кастомные виджеты используются :) В данном случае разговор идёт про делегаты, причём унаследованные именно от QStyledItemDelegate, с которым не должно быть проблем с CSS.И чтобы добиться одинакового вида на всех платформах :) Да и почему они должны быть, если QComboBox::view() использует его. Есть подозрение, что ТС нас вводит в заблуждение. Судя по описанию CSS никакой галочки в принципе быть не должно и эти настройки не должны влиять на view. И кстати, как устанавливается этот CSS? Название: Re: Стилизация QCombobox Отправлено: Old от Июнь 17, 2016, 12:15 А как может кастомный виджет получить "правильный" доступ к stylesheet? Виджету будет настроена палитра, цвета для отрисовки придется брать оттуда, а не с потолка. :)Он его самостоятельно парсить должен, что ли? :) Это же относится ко всем остальным пропертям. Название: Re: Стилизация QCombobox Отправлено: WereWind от Июнь 17, 2016, 13:42 Есть подозрение, что ТС нас вводит в заблуждение. Не ввожу. Вот так выглядит менюшка, если просто перетащить на форму в криэйторе комбобокс и приписать ему стайлшит из первого поста. (https://postimg.org/image/8a2f5a5zb/) Если же сверху накатить делегат, то все становится скучнее (https://postimg.org/image/op6yix9fr/) Мне, в общем-то, все равно, каким методом увеличивать айтем комбобокса, если это можно сделать через QSS, я буду толкьо рад Название: Re: Стилизация QCombobox Отправлено: GreatSnake от Июнь 17, 2016, 13:54 Не ввожу. Вот так выглядит менюшка, если просто перетащить на форму в криэйторе комбобокс и приписать ему стайлшит из первого поста. Понятно, значит это убунта что-то шаманит.Цитировать Мне, в общем-то, все равно, каким методом увеличивать айтем комбобокса, если это можно сделать через QSS, я буду толкьо рад Код
Название: Re: Стилизация QCombobox Отправлено: WereWind от Июнь 17, 2016, 15:01 Не помогло. По умолчанию в кб стоит некий QComboboxListView. который, судя по всему, скрытый и добраться до него у меня не вышло. твой КСС на него не действует. Если прописать в view кб QListView, то ксс работает, но у QListView нет выбранного в данный момент элемента, поэтому галочка пропадает.
Я попробуй сейчас повыдирать paintEvent из QComboboxListView, посмотрю что выйдет Название: Re: Стилизация QCombobox Отправлено: titan83 от Июль 13, 2016, 16:59 ТС, использую такой стайл:
Код: QComboBox QAbstractItemView::item { margin-top: 25px; } Код: combobox->setItemDelegate(new QStyledItemDelegate); |