1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| #include <QApplication> #include <QWidget> #include <QPushButton> #include <QVBoxLayout> #include <QMenu> #include <QShortcut> #include <QDebug> #include <qstyle.h>
void setupButtonDemo(QWidget *parent) { QVBoxLayout *layout = new QVBoxLayout(parent);
QPushButton *normalBtn = new QPushButton("普通按钮", parent);
QPushButton *iconBtn = new QPushButton("保存 (Ctrl+S)", parent); iconBtn->setIcon(parent->style()->standardIcon(QStyle::SP_DriveHDIcon)); iconBtn->setShortcut(QKeySequence("Ctrl+S"));
QPushButton *toggleBtn = new QPushButton("开启静音", parent); toggleBtn->setCheckable(true);
QObject::connect(toggleBtn, &QPushButton::toggled, [toggleBtn](bool checked) { if (checked) { toggleBtn->setText("静音中..."); } else { toggleBtn->setText("开启静音"); } });
QPushButton *menuBtn = new QPushButton("更多选项", parent); QMenu *menu = new QMenu(menuBtn); menu->addAction("个人资料"); menu->addAction("退出登录"); menuBtn->setMenu(menu);
QObject::connect(normalBtn, &QPushButton::clicked, []() { qDebug() << "普通按钮被点击了!"; });
layout->addWidget(normalBtn); layout->addWidget(iconBtn); layout->addWidget(toggleBtn); layout->addWidget(menuBtn); layout->addStretch(); }
int main(int argc, char *argv[]) { QApplication a(argc, argv); QWidget w; w.setWindowTitle("QPushButton 全能演示"); w.resize(300, 250); setupButtonDemo(&w); w.show(); return a.exec(); }
|