对QToolBar其中的某些项进行控制显示/隐藏

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Ilson_/article/details/83928248

        对于QToolBar我们虽然把所有的功能都添加上去了,但是有时候我们需要对其功能进行控制,比如说我们需要其输入密码才能有权限打开某一些功能,对于没有密码的就屏蔽一些功能.

        首先我们给QToolBar添加一个按钮:

QAction *pAction1, *pAction2, *pAction3;
QMenu *pMenu = new QMenu;
pAction1 = new QAction(QIcon(":/Tools/Icon/Tools/line.png"), tr("Line"), pMenu);
pAction2 = new QAction(QIcon(":/Tools/Icon/Tools/hline.png"), tr("Horizontal Line"), pMenu);
pAction3 = new QAction(QIcon(":/Tools/Icon/Tools/vline.png"), tr("Vertical Line"), pMenu);
connect(pAction1, SIGNAL(triggered()), this, SLOT(lineClick()));
connect(pAction2, SIGNAL(triggered()), this, SLOT(hlineClick()));
connect(pAction3, SIGNAL(triggered()), this, SLOT(vlineClick()));
pMenu->addAction(pAction1);
pMenu->addAction(pAction2);
pMenu->addAction(pAction3);

QToolButton *pButton = new QToolButton(this);
pButton->setMenu(pMenu);
pButton->setPopupMode(QToolButton::MenuButtonPopup);

m_pToolBar->addWidget(pButton);

        然后我们对其进行隐藏,如果直接使用 pButton->setVisible(false)的话是没有效果的,正确的做法是: 

//因为我们只添加了一个按钮,所以只需要取其下标为0的那个
QList<QAction *> list = m_pToolBar->actions();
list[0]->setVisible(false);

猜你喜欢

转载自blog.csdn.net/Ilson_/article/details/83928248