Я хочу установить цвет границы элемента меню, когда пользователь установит на нем фокус. Первый — 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
}
Вы просто делаете:
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 может иметь больше опций стиля.
Других решений пока нет …