QToolBar工具条中按钮的隐藏

QToolBar工具条中按钮的隐藏

实际需求

在UI程序设计中,有时候我们需要根据使用者的操作权限来设定QToolBar工具条中相应按钮的显示和隐藏。

操作步骤

在编写代码中,我们隐藏整个QToolBar很容易,需要下面简单的一条语句就可以。
m_toolbar1->setHidden(true);

但是隐藏QToolBar中的某些按钮,对于新手来说可能就没有头绪,下面介绍对应的思路。

第一步,定义对应的对象指针
QToolBar *m_toolbar1;
QToolButton *m_toolBtn1;
QToolButton *m_toolBtn2;
QToolButton *m_toolBtn3;
QListWidget *m_listWidget;
QList<QAction *> ActionList; //获取QToolBar 对应按钮的响应菜单。

第二步,创建(实例化)对应的对象
void MainWindow::createToolbar()
{
m_toolbar1 = new QToolBar(“toolbar1”);
m_toolbar1->setMovable(false);
m_toolbar1->setIconSize(QSize(48,48));
m_toolBtn1 = new QToolButton();
m_toolBtn1->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
QAction *pAction1 = new QAction(this);
pAction1->setText(“按钮1”);
pAction1->setToolTip(“这是按钮1”);
m_toolBtn1->setDefaultAction(pAction1);
// m_toolBtn1->setIconSize(QSize(48,48));
m_toolBtn1->setIcon(QIcon(":/CR.ico"));

m_toolBtn2 = new QToolButton();
m_toolBtn2->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
QAction *pAction2 = new QAction(this);
pAction2->setText("按钮2");
pAction2->setToolTip("这是按钮2");
m_toolBtn2->setDefaultAction(pAction2);

// m_toolBtn1->setIconSize(QSize(48,48));
m_toolBtn2->setIcon(QIcon(":/MobaXterm.ico"));

m_toolBtn3 = new QToolButton();
m_toolBtn3->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
QAction *pAction3 = new QAction(this);
pAction3->setText("按钮3");
pAction3->setToolTip("这是按钮3");
m_toolBtn3->setDefaultAction(pAction3);
//    m_toolBtn1->setIconSize(QSize(48,48));
m_toolBtn3->setIcon(QIcon(":/AcadDWGAssoc.ico"));

QComboBox *cmbBox = new QComboBox;
QStringList list;
list<<"item1"<<"item2"<<"item3";
cmbBox->addItems(list);


m_toolbar1->addWidget(m_toolBtn1);
m_toolbar1->addWidget(m_toolBtn2);
m_toolbar1->addWidget(m_toolBtn3);
m_toolbar1->addSeparator();

// m_toolbar1->addWidget(cmbBox);

this->addToolBar(m_toolbar1);

connect(pAction1, &QAction::triggered, this, &MainWindow::on_ActionA);
connect(pAction2, &QAction::triggered, this, &MainWindow::on_ActionB);

// m_toolbar1->setHidden(true);
// pAction1->setDisabled(true);
// pAction1->setVisible(false);
QList<QAction *> ActionList = m_toolbar1->actions();

第三步,在需要隐藏的代码段中设置QToolBar 对应按钮的可见性

void MainWindow::on_listWidget_itemClicked(QListWidgetItem *item)
{
if(item->text() == “内部界面1”){
ui->stackedWidget->setCurrentWidget(m_dlg1);
ActionList[0]->setVisible(false);
}
if(item->text() == “内部界面2”){
ui->stackedWidget->setCurrentWidget(m_dlg2);
ActionList[0]->setVisible(true);
}

}

按钮1隐藏前效果:
在这里插入图片描述
按钮1隐藏后效果:
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值