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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Установка цвета фона пункта меню  (Прочитано 3434 раз)
lex532
Гость
« : Июль 02, 2013, 21:42 »

Здравствуйте.
Нужен совет знатоков Qt.
Как установить цвет фона у одного пункта меню (QMenu)?
Записан
spirits25
Гость
« Ответ #1 : Июль 03, 2013, 12:28 »

Средствами QSS можно только текущую выделенную
Код:
QMenu::item:selected { /* when user selects item using mouse or keyboard */
     background-color: #654321;
 }

Если надо только один пункт, то можно сделать финт ушами (но только если совсем приспичит):
Код:
    fileMenu->addAction(openAction);
    openAction->setCheckable(true);
    openAction->setChecked(true);

    fileMenu->setStyleSheet("QMenu::item:checked { background-color: #654321; }");

Больше из qss не знаю что выжать..
Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #2 : Июль 03, 2013, 12:32 »

можно через palette
Записан
spirits25
Гость
« Ответ #3 : Июль 03, 2013, 12:35 »

или как вариант можно рассмотреть такой код:
Код:
#include <QApplication>
#include <QMainWindow>
#include <QWidgetAction>
#include <QMenuBar>
#include <QMenu>
#include <QLabel>
#include <QStyle>
#include <QDebug>

int
main (int argc,
      char **argv)
{
    QApplication app(argc, argv);
    app.setStyleSheet("QLabel#label1 { background-color: blue }" \
                      "QLabel#label2 { background-color: yellow }");

    QMainWindow win;

    QLabel *label1 = new QLabel("Action1");
    label1->setObjectName("label1");
    QWidgetAction action1(&win);
    action1.setDefaultWidget(label1);

    QLabel *label2 = new QLabel("Action2");
    label2->setObjectName("label2");
    QWidgetAction action2(&win);
    action2.setDefaultWidget(label2);

    QMenu menu("Edit");
    menu.addAction(&action1);
    menu.addAction(&action2);

    win.menuBar()->addMenu(&menu);
    win.show();

    return app.exec();
}
Тут итемам назначаются QLabel, с которыми можно жанглировать=) код не проверял.
Записан
lex532
Гость
« Ответ #4 : Июль 04, 2013, 22:20 »

Спасибо. Совет с QWidgetAction помог.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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