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 63 64 65 66 67 68
| #include <QApplication> #include <QWidget> #include <QToolButton> #include <QVBoxLayout> #include <QHBoxLayout> #include <QMenu> #include <QStyle> #include <QDebug>
void setupToolButtonDemo(QWidget *parent) { QVBoxLayout *mainLayout = new QVBoxLayout(parent); QHBoxLayout *rowLayout = new QHBoxLayout();
QToolButton *homeBtn = new QToolButton(parent); homeBtn->setIcon(parent->style()->standardIcon(QStyle::SP_DirHomeIcon)); homeBtn->setToolTip("返回主页");
QToolButton *editBtn = new QToolButton(parent); editBtn->setText("编辑文档"); editBtn->setIcon(parent->style()->standardIcon(QStyle::SP_FileDialogContentsView)); editBtn->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
QToolButton *menuBtn = new QToolButton(parent); menuBtn->setText("新建项目"); menuBtn->setIcon(parent->style()->standardIcon(QStyle::SP_FileIcon)); menuBtn->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
QMenu *newMenu = new QMenu(menuBtn); newMenu->addAction("C++ 项目"); newMenu->addAction("Python 项目"); newMenu->addAction("Qt 项目");
menuBtn->setMenu(newMenu); menuBtn->setPopupMode(QToolButton::MenuButtonPopup);
QObject::connect(homeBtn, &QToolButton::clicked, []() { qDebug() << "主页按钮被点击了"; });
QObject::connect(newMenu, &QMenu::triggered, [](QAction *action) { qDebug() << "选择了新建:" << action->text(); });
rowLayout->addWidget(homeBtn); rowLayout->addWidget(editBtn); rowLayout->addWidget(menuBtn); mainLayout->addLayout(rowLayout); mainLayout->addStretch(); }
int main(int argc, char *argv[]) { QApplication a(argc, argv); QWidget w; w.setWindowTitle("QToolButton 工具按钮演示"); w.resize(400, 200); setupToolButtonDemo(&w); w.show(); return a.exec(); }
|