Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: diggaz от Апрель 24, 2010, 17:24



Название: Заголовок в контекстном меню.
Отправлено: diggaz от Апрель 24, 2010, 17:24
Есть необходимость сделать заголовок в вызываемом контекстном меню.
Сейчас я сделал это просто, создал дополнительный пункт в меню и изменил в нем шрифт.
Но все же хотелось бы еще поменять фон у этого пункта(заголовка).
Как, допустим, можно прикрутить стиль только для отдельного пункта в контекстном меню? Либо совсем по другому реализовать заголовок?

Как сейчас выглядит:

(http://img339.imageshack.us/img339/2824/contextmenu.jpg)

Код:
    menu = new QMenu(this);

    actReal = new QAction(tr("Real action"), this);
    actDummy = new QAction(tr("Title"), this);

    menu->addAction(actDummy);
    menu->addAction(actReal);

    connect(this, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(slot_customContextMenuReq(QPoint)));

    QFont font;
    font.setPixelSize(10);
    font.setBold(true);

    actDummy->setFont(font);
    //actDummy->setDisabled(false);

Исходники во вложении


Название: Re: Заголовок в контекстном меню.
Отправлено: SABROG от Апрель 24, 2010, 17:54
Похоже только через QWidgetAction. Как я ни пытался mandatory value установленное в QAction не срабатывает:

Код
CSS
QMenu::item[header="true"] {
    background: black;
}
 


Название: Re: Заголовок в контекстном меню.
Отправлено: diggaz от Апрель 24, 2010, 19:37
Цитировать
Похоже только через QWidgetAction
А как конкретно? Еще не работал с этим классом.


Название: Re: Заголовок в контекстном меню.
Отправлено: Авварон от Апрель 24, 2010, 19:48
QWidgetAction * action = new QWidgetAction;
action->setDefaultWidget(myHeader);
menu->addAction(action);

если не вру:)
я так добавлял видео в менюшки, было прикольно:)


Название: Re: Заголовок в контекстном меню.
Отправлено: diggaz от Апрель 24, 2010, 20:05
Всем спасибо, разобрался.
Теперь выглядит так:

(http://img339.imageshack.us/img339/1083/contextmenu2.jpg)

Исходники прилагаю.

Код:
    menu = new QMenu(this);

    actReal = new QAction(tr("Real action"), this);

    connect(this, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(slot_customContextMenuReq(QPoint)));

    actWid = new QWidgetAction(menu);
    QLabel *label1 = new QLabel("Title");
    label1->setObjectName("contextMenuTitle");
    actWid->setDefaultWidget(label1);

    menu->addAction(actWid);
    menu->addAction(actReal);

    menu->setStyleSheet("QLabel#contextMenuTitle { background-color: blue; font: bold 10px; color: white; }");