(16)工具按钮 QToolButton的综合运用,给一个完整的小例子,附带弹出菜单,以及三种弹出模式

(1)先给出综述QToolButton 的源码阅读在这里

在这里插入图片描述

++

在这里插入图片描述

(2)给出 本项目的源代码,本项目完整演示了 QToolButton

在这里插入图片描述

++

在这里插入图片描述

++ mainwindow.cpp 文件太大,以代码形式展示

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QTime>
#include <QActionGroup>
#include <QSpinBox>
#include <QLabel>
#include <QProgressBar>
#include <QMenu>

MainWindow::~MainWindow() {    delete ui;   }

MainWindow::MainWindow(QWidget * parent)
    : QMainWindow(parent), ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    ui->toolButton_Date->setDefaultAction(ui->actionDate); //关联 toolButton与 QAction
    ui->toolButton_Time->setDefaultAction(ui->actionTime);

    QMenu * menuDateTime = new QMenu(this) ; //此菜单供三个 toolButton共用
    menuDateTime->addAction(ui->actionDate);
    menuDateTime->addAction(ui->actionTime);

    //工具栏里的此 toolButton采用延迟弹出属性
    QToolButton * toolButtonMenu = new QToolButton(this);
    toolButtonMenu->setMenu(menuDateTime);  //不设置箭头属性了,因为会遮盖绑定 QAction的图标
    toolButtonMenu->setPopupMode(QToolButton::DelayedPopup);
    toolButtonMenu->setDefaultAction(ui->actionHaha); //测试证明: 延迟弹出的菜单不影响 action的使用
    toolButtonMenu->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);

    ui->toolBar->addSeparator();            //把代码生成的 QToolButton按钮控件添加进工具栏
    ui->toolBar->addWidget(toolButtonMenu);

    ui->toolButton_DateTime->setMenu(menuDateTime); //UI界面固定为 MenuButtonPopup 模式
    ui->toolButton_DateTime->setDefaultAction(ui->actionHold_on); //给按钮个 QAction

    ui->toolButton_Hold    ->setMenu(menuDateTime); //因为是立即触发,QAction不会被执行了。
    ui->toolButton_Hold    ->setDefaultAction(ui->actionHold_on);

}

void MainWindow::on_actionDate_triggered()
{   ui->pushButton->setText(QDate::currentDate().toString());  }


void MainWindow::on_actionTime_triggered()
{   ui->pushButton->setText(QTime::currentTime().toString());  }

void MainWindow::on_actionHaha_triggered()
{   ui->pushButton->setText("哈哈")            ;  }

void MainWindow::on_actionHold_on_triggered()
{   ui->pushButton->setText("Hold_on, please");  }

void MainWindow::on_toolButton_Time_triggered(QAction * arg1) {  qDebug() << arg1;  }

(3)

谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值