как установить стиль menu :: item :: selected в Qt?

Я хочу установить цвет границы элемента меню, когда пользователь установит на нем фокус. Первый — item :: selected, это правильное свойство? И если да, то как это установить? Я использую Designer или делаю это вручную в коде C ++?

Customizing QMenu Individual items of a QMenu are styled using the 'item' subcontrol as follows:

QMenu {
background-color: #ABABAB; /* sets background of the menu */
border: 1px solid black;  }

QMenu::item {
/* sets background of menu item. set this to something non-transparent
if you want menu color and menu item color to be different */
background-color: transparent;  }

QMenu::item:selected { /* when user selects item using mouse or keyboard */
background-color: #654321;  }

Хорошо, но где поместить это в Qt 5.0? Я использую это в дизайнер в таблицы стилей имущество? Я думаю, нет. В моих .cpp файлах? я могу сделать setStyleSheet в моем меню, но как указать :: item :: selected?

#include "MainWindow.h"#include <QtWidgets/QWidget>
#include <QtWidgets/QMessageBox>
cf16tradingclient_1::cf16tradingclient_1(){
widget.setupUi(this);
widget.menuMarket->setStyleSheet(?????????) // I want item::selected
}

0

Решение

Вы просто делаете:

widget.menuMarket->setStyleSheet("QMenu::item:selected{border:1px solid red;}");

Это подходящее место, если вы хотите, чтобы только одно конкретное меню вело себя так. (Я не понимаю, почему установка этого в Designer не сработает. Попробуйте. Но я сам не знаком с этим.)

Если вы хотите, чтобы все ваши меню имели одинаковый стиль, сделайте это на QApplication уровень, в вашем main или другой фрагмент кода, который запускается один раз при запуске.

QApplication app(argc, argv);
// ...
app.setStyleSheet("QMenu::item:selected {border: 5px solid yellow;}");
// ...

И вы можете объединить два. Таблица стилей, которую вы размещаете в конкретном виджете (первый пример), переопределит глобальную таблицу стилей (так же, как это делает CSS).

Это работает одинаково в Qt4 и Qt5, хотя Qt5 может иметь больше опций стиля.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]