当前位置: 首页 > news >正文

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

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

code review!

文章目录

  • qt-C++笔记之QToolButton和QPushButton的区别
    • 1.运行
    • 2.main.cpp
    • 3.main.pro

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

相关文章:

  • 算法1-2 分数线划定
  • Saleae逻辑分析仪的安装与使用
  • 1.2 Scala变量与数据类型
  • Kafka面试题及原理
  • git笔记
  • Java进阶——常用工具类
  • 实例分割 | yolov11训练自己的数据集
  • Mysql 死锁场景及解决方案
  • 图像分类项目2:鸟类图像分类
  • 计算机毕业设计SpringBoot+Vue.js校园失物招领系统(源码+文档+PPT+讲解)
  • 【C】链式二叉树算法题1 -- 单值二叉树
  • 打开 Windows Docker Desktop 出现 Docker Engine Stopped 问题
  • 前缀列表(ip-prefix)配置
  • 10.2 指针进阶_函数指针
  • 2025年上海安卓发展机遇
  • 云计算:重塑数字世界的基石
  • spring的15个经典面试题
  • 深入解析Spring核心扩展点:BeanFactoryPostProcessor与BeanDefinitionRegistryPostProcessor
  • (十 二)趣学设计模式 之 享元模式!
  • Unity小功能实现:鼠标点击移动物体
  • 高飞已任南航集团党组副书记
  • 国际乒联主席索林:洛杉矶奥运会增设混团是里程碑事件
  • 我国城市规划“全面体检”套餐出台,城市体检将逐步与供地计划等挂钩
  • 钕铁硼永磁材料龙头瞄准人形机器人,正海磁材:已向下游客户完成小批量供货
  • 复原展出孙吴大墓,江苏首座考古博物馆将开放
  • 沪喀同心|为新疆青少年提供科普大餐,“小小博物家(喀什版)”启动