QMenuBar不使用原生风格? c ++,QTDesigner。 UI

时间:2017-06-10 01:43:26

标签: c++ qt menu qt-designer qstylesheet

我有一个小Ui。

它有一个MainWindow。顶部是QMenuBar。

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

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

  4.   

它们只是纯文本。

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使用本机操作系统风格?

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

我使用的是Windows 10,所以可能会对此产生一些影响?

1 个答案:

答案 0 :(得分:0)

所以我想出了如何编辑我需要的风格。

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

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

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

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