由于css中没有针对action状态的选项,所以在它失效时样式无法改变,只能从代码中进行设置
代码如下:
QAction*MainWindow::createAction(QString name)
{
QAction *action = new QAction(name,this);
action->setObjectName(name);
return action;
}
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
//新创建的action
auto aaa = createAction("aaa");
ui->mainToolBar->addAction(aaa);
ui->mainToolBar->widgetForAction(aaa)->setObjectName(aaa->objectName());
auto bbb = createAction("bbb");
ui->mainToolBar->addAction(bbb);
ui->mainToolBar->widgetForAction(bbb)->setObjectName(bbb->objectName());
auto ccc = createAction("ccc");
ui->mainToolBar->addAction(ccc);
ui->mainToolBar->widgetForAction(ccc)->setObjectName(ccc->objectName());
//界面上工具栏添加的action
ui->mainToolBar->widgetForAction(ui->actionOpen)->setObjectName(ui->actionOpen->objectName());
ui->mainToolBar->setStyleSheet
(
"QToolButton#aaa { background:red }"
"QToolButton#bbb { background:blue }"
"QToolButton#ccc { background:green }"
);
//给指定action改变背景样式{action失效时,css中无法对action状态进行分类}
if(!(ui->actionOpen->isEnabled()))
{
ui->mainToolBar->setStyleSheet
(
"QToolButton#actionOpen { background:gray }"
);
}
}
action失效时效果如下:
action未失效时: