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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО] Разделитель в QMenuBar во всех стилях  (Прочитано 3760 раз)
skandinavijos
Гость
« : Декабрь 15, 2012, 14:43 »

Во всех стилях кроме CDE и Motif игнорируется разделитель в строке меню. Как его добавить? Каюсь, по стилям не знаю ничего, кроме примитивных вещей через setStyleSheet. С ходу гугл не дал ничего.
« Последнее редактирование: Декабрь 20, 2012, 20:03 от skandinavijos » Записан
porup
Гость
« Ответ #1 : Декабрь 20, 2012, 10:14 »

За прорисовку разделителя (сепаратора) отвечает метод styleHint(QStyle::SH_DrawMenuBarSeparator, ...) соответствующего стиля. В стилях CDE и Motif этот метод возвращает 1, в остальных стилях - 0. Сам расчет расположения пунктов меню выполняется в QMenuBarPrivate::calcActionRects(). Поэтому необходимо либо наследоваться от нужного стиля и переопределить метод styleHint
Код
C++ (Qt)
class MyStyle : public QPlastiqueStyle
{
public:
   int styleHint(StyleHint hint, const QStyleOption *opt, const QWidget *w, QStyleHintReturn *returnData) const {
       return (hint == SH_DrawMenuBarSeparator) ? 1 : QPlastiqueStyle::styleHint(hint, opt, w, returnData);
   }
};
, либо изменить исходник qcommonstyle.cpp.
« Последнее редактирование: Декабрь 20, 2012, 11:31 от porup » Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #2 : Декабрь 20, 2012, 11:45 »

QProxyStyle

А еще на маке всё равно разделителя не будет. JFYI.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #3 : Декабрь 20, 2012, 11:52 »

Как workaround можно добавить QFrame( QFrame::HLine ) через QWidgetAction.
Записан

Qt 5.11/4.8.7 (X11/Win)
skandinavijos
Гость
« Ответ #4 : Декабрь 20, 2012, 20:01 »

воспользовался наследованием. porup, спасибо
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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