qt-C++笔记之QToolButton和QPushButton的区别

qt-C++笔记之QToolButton和QPushButton的区别

code review!

1.运行

在这里插入图片描述

  • QToolButton

    • 适用于工具栏或需要较紧凑、图标化显示的场合。
    • 通过 setAutoRaise(true)setToolButtonStyle(Qt::ToolButtonTextUnderIcon) 的设置,可以实现鼠标悬停时加亮、图标在上文字在下的效果。
  • QPushButton

    • 通常用于对话框或常规操作按钮。
    • 默认具有标准的按钮外观,图标与文字通常并列显示。

2.main.cpp

#include <QApplication>
#include <QWidget>
#include <QToolButton>
#include <QPushButton>
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QStyle>
#include <QIcon>
#include <QMessageBox>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    
    // 创建主窗口
    QWidget window;
    window.setWindowTitle("QToolButton vs QPushButton 对比");

    // 设置主布局(垂直布局)
    QVBoxLayout *mainLayout = new QVBoxLayout(&window);

    // 创建一个水平布局,用来放置两个按钮
    QHBoxLayout *buttonLayout = new QHBoxLayout;

    // 使用标准图标来说明图标效果
    QIcon icon = window.style()->standardIcon(QStyle::SP_DesktopIcon);

    // -----------------------------
    // 创建 QToolButton
    // -----------------------------
    QToolButton *toolButton = new QToolButton;
    toolButton->setText("QToolButton");
    toolButton->setToolTip("这是 QToolButton,通常用于工具栏");
    // 设置自动抬起,鼠标悬停时会加亮(适合工具栏风格)
    toolButton->setAutoRaise(true);
    // 设置显示风格:图标在上, 文字在下(常用于工具栏按钮)
    toolButton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
    toolButton->setIcon(icon);

    // -----------------------------
    // 创建 QPushButton
    // -----------------------------
    QPushButton *pushButton = new QPushButton("QPushButton");
    pushButton->setToolTip("这是 QPushButton,常用于常规操作");
    pushButton->setIcon(icon);

    // -----------------------------
    // 连接按钮的点击信号
    // -----------------------------
    QObject::connect(toolButton, &QToolButton::clicked, [](){
        QMessageBox::information(nullptr, "QToolButton", "你点击了 QToolButton");
    });
    
    QObject::connect(pushButton, &QPushButton::clicked, [](){
        QMessageBox::information(nullptr, "QPushButton", "你点击了 QPushButton");
    });

    // 将两个按钮添加到水平布局中
    buttonLayout->addWidget(toolButton);
    buttonLayout->addWidget(pushButton);

    // 将按钮布局添加到主布局
    mainLayout->addLayout(buttonLayout);

    // 显示主窗口
    window.show();
    return app.exec();
}

3.main.pro

QT       += widgets

CONFIG   += c++11 console
CONFIG   -= app_bundle

SOURCES += main.cpp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只野生的善逸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值