1

我有一个小ui。

它有一个主窗口。顶部是 QMenuBar。

  1. 当我运行程序(没有错误消息)时,一切正常。

  2. 但是,菜单的子项在悬停或按下时没有任何样式。

它们只是纯文本。

QMenuBar:

选项(QMenu)
--关于(QAction)--
重置(QAction)

我认为他们会为菜单项采用本机操作系统样式。但除了纯黑色文本之外,它们根本没有任何风格。

我已将 QActions 连接到一个 SLOT:

QAction::connect(ui->actionAbout, SIGNAL(hovered()), this, SLOT(changeAbout())); 

然后使用该 SLOT 我尝试通过以下方式更新样式:

 void MainWindow::changeAbout(){
    ui->menuBarA->setStyleSheet("background-color: rgb(200,0,0);}");
 }

当然,这只是整个菜单的样式。但它显示 QAction 已连接。

问:如何让 QMenuBar 使用原生 OS 风格?

问:或者我如何设置 QActions 的样式以像普通窗口一样包含悬停和按下状态?

我正在使用 Windows 10,所以也许这对此有一些影响?

4

1 回答 1

0

所以我想出了如何编辑我需要的样式。

使用qt中的ui编辑器,选择QMenuBar -> Qmenu对象。这是包含它们自身的动作的对象。

在属性编辑器中将其添加到样式表中:

selection-background-color: rgb(204, 204, 204);
color: rgb(80, 80, 80);
selection-color: rgb(0, 0, 0);

这将导致子菜单项的行为与大多数程序一样,因为它们会在悬停时改变颜色或背景改变颜色。

于 2017-06-15T00:55:58.200 回答