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