文章目录
- 1.测试工程配置
- 2. 成员函数
- 2.1 void setMenu(QMenu *menu)
- 2.2 void setPopupMode(QToolButton::ToolButtonPopupMode mode)
- 2.3 void setAutoRaise(bool enable)
- 2.4 void setArrowType(Qt::ArrowType type)
- 2.5 QToolButton::ToolButtonPopupMode popupMode() const
- 2.6 QMenu *menu() const
- 2.7 QAction *defaultAction() const
- 2.8 bool autoRaise() const
- 2.9 Qt::ArrowType arrowType() const
- 2.10 Qt::ToolButtonStyle toolButtonStyle() const
- 2.11 槽函数 void setDefaultAction(QAction *action)
- 2.12 槽函数 void setToolButtonStyle(Qt::ToolButtonStyle style)
- 2.13 槽函数 void showMenu()
- 2.14 信号 void triggered(QAction *action)
1.测试工程配置
创建名为QtGuiAppTest的qwidget工程,带ui文件
2. 成员函数
继承自QAbstractButton,QAbstractButton成员函数详见《QAbstractButton成员函数功能和使用详细说明(文字+用例+代码+效果图)》
2.1 void setMenu(QMenu *menu)
(1)功能说明
为按钮添加下拉列表
(2)效果展示
注意:需要按下按钮等待一段时间才能弹出下拉列表,该特性受setPopupMode函数设置的弹出模式的影响,默认为延迟弹出
(3)调用程序
QtGuiAppTest::QtGuiAppTest(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
QMenu* pMenu = new QMenu();
pMenu->addAction(QString::fromLocal8Bit("文件"));
pMenu->addAction(QString::fromLocal8Bit("打开"));
pMenu->addAction(QString::fromLocal8Bit("项目"));
ui.toolButton->setMenu(pMenu);
}
2.2 void setPopupMode(QToolButton::ToolButtonPopupMode mode)
(1)功能说明
设置菜单弹出模式
常量名 | 常量值 | 描述 |
---|---|---|
QToolButton::DelayedPopup | 0 | 在按下按钮一定时间后,弹出菜单。一个典型的应用案例是浏览器菜单栏的返回按钮,点击后返回上一个网页,长按下,按钮会展示一个历史记录 |
QToolButton::MenuButtonPopup | 1 | 在这种模式下,按钮展示一个特殊的箭头指向菜单弹出的方向。当按钮上箭头部分被按下,弹出菜单 |
QToolButton::InstantPopup | 2 | 在这种模式下,点击按钮弹出菜单,没有延迟。另外,按钮本身的动作不会被触发(例如clicked等信号不会发出) |
(2)效果展示
QToolButton::DelayedPopup
QToolButton::MenuButtonPopup
QToolButton::InstantPopup
(3)调用程序
#include "QtGuiAppTest.h"
#include<qmessagebox.h>
QtGuiAppTest::QtGuiAppTest(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
QMenu* pMenu = new QMenu();
pMenu->addAction(QString::fromLocal8Bit("文件"));
pMenu->addAction(QString::fromLocal8Bit("打开"));
pMenu->addAction(QString::fromLocal8Bit("项目"));
ui.toolButton->setMenu(pMenu);
ui.toolButton->setPopupMode(QToolButton::InstantPopup);
}
2.3 void setAutoRaise(bool enable)
(1)功能说明
设置按钮边框是否可见,当参数为true时,边框不可见
(2)效果展示
(3) 调用程序
QtGuiAppTest::QtGuiAppTest(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
ui.toolButton->setIcon(QIcon(":/Resources/tank.jpg"));
ui.toolButton->setIconSize(QSize(140, 70));
ui.toolButton->setAutoRaise(true);
}
2.4 void setArrowType(Qt::ArrowType type)
(1)功能说明
设置按钮上显示的箭头图像
常量名 | 常量值 | 描述 |
---|---|---|
Qt::NoArrow | 0 | 无箭头 |
Qt::UpArrow | 1 | 向上的箭头 |
Qt::DownArrow | 2 | 向下的箭头 |
Qt::LeftArrow | 3 | 向左的箭头 |
Qt::RightArrow | 4 | 向右的箭头 |
(2)效果展示
Qt::NoArrow
Qt::UpArrow
Qt::DownArrow
Qt::LeftArrow
Qt::RightArrow
(3) 调用程序
QtGuiAppTest::QtGuiAppTest(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
ui.toolButton->setArrowType(Qt::RightArrow);
}
2.5 QToolButton::ToolButtonPopupMode popupMode() const
获取菜单弹出模式,详细见setPopupMode功能说明
2.6 QMenu *menu() const
获取按钮上的下拉列表,详细见setMenu功能说明
2.7 QAction *defaultAction() const
获取按钮的默认动作,详细见setDefaultAction功能说明
2.8 bool autoRaise() const
获取边框是否显示的状态,详细见setAutoRaise功能说明
2.9 Qt::ArrowType arrowType() const
获取按钮设置的箭头类型,详细见setArrowType功能说明
2.10 Qt::ToolButtonStyle toolButtonStyle() const
获取按钮风格,详见槽函数setToolButtonStyle
2.11 槽函数 void setDefaultAction(QAction *action)
(1)功能说明
设置按钮的默认动作为指定动作,这个动作定义了按钮的一下特性:
checkable(是否可勾选)
checked(是否被勾选)
enabled(窗口是否可用)
font (是否在窗口最上层)
icon (设置图片)
popupMode (如果按钮有下拉菜单,则设置菜单的弹出模式)
statusTip (设置窗口的状态提示)
text (设置按钮上的文本)
toolTip(设置工具提示)
whatsThis(设置帮助信息)
(2)效果展示
(3)调用程序
QtGuiAppTest::QtGuiAppTest(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
QAction* pact = new QAction("xiangmu");
ui.toolButton->setDefaultAction(pact);
}
2.12 槽函数 void setToolButtonStyle(Qt::ToolButtonStyle style)
(1)功能说明
设置按钮是否仅展示图像或者仅展示文本,或者文本在图像旁边或者文本在图像下面
常量名 | 常量值 | 描述 |
---|---|---|
Qt::ToolButtonIconOnly | 0 | 仅展示图像 |
Qt::ToolButtonTextOnly | 1 | 仅展示文本 |
Qt::ToolButtonTextBesideIcon | 2 | 文本展示在图像一侧 |
Qt::ToolButtonTextUnderIcon | 3 | 文本展示在图像下面 |
Qt::ToolButtonFollowStyle | 4 | 符合style设置 |
(2)效果展示
Qt::ToolButtonIconOnly
Qt::ToolButtonTextOnly
Qt::ToolButtonTextBesideIcon
Qt::ToolButtonTextUnderIcon
(3)调用程序
QtGuiAppTest::QtGuiAppTest(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
ui.toolButton->setText(QString::fromLocal8Bit("坦克"));
ui.toolButton->setIcon(QIcon(":/Resources/tank.jpg"));
ui.toolButton->setIconSize(QSize(140, 40));
ui.toolButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
}
2.13 槽函数 void showMenu()
展示按钮上的下拉菜单
2.14 信号 void triggered(QAction *action)
(1)功能说明
当给定的action被触发,按钮会输出该信号。这里的action是指按钮关联的action,例如菜单的action
(2)效果展示
(3)调用程序
#include "QtGuiAppTest.h"
#include<qmenu.h>
#include<qmessagebox.h>
QtGuiAppTest::QtGuiAppTest(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
QMenu* pmenu = new QMenu();
pmenu->addAction("file");
pmenu->addAction("edit");
pmenu->addAction("proj");
ui.toolButton->setMenu(pmenu);
ui.toolButton->setPopupMode(QToolButton::MenuButtonPopup);
connect(ui.toolButton, &QToolButton::triggered, this, &QtGuiAppTest::SlotTest);
}
void QtGuiAppTest::SlotTest(QAction* act)
{
QMessageBox::information(this, "test", act->text());
}