QToolButton
共有类型
enum ToolButtonPopupMode { DelayedPopup, MenuButtonPopup, InstantPopup }
enum QToolButton::ToolButtonPopupMode | 值 | 描述 |
---|
QToolButton::DelayedPopup | 0 | 按住工具按钮一段时间后(超时取决于样式,请参阅 QStyle::SH_ToolButton_PopupDelay),将显示菜单。 一个典型的应用示例是某些 Web 浏览器工具栏中的“后退”按钮。 如果用户单击它,浏览器会简单地浏览回上一页。 如果用户按住按钮一段时间,工具按钮会显示一个包含当前历史列表的菜单 |
QToolButton::MenuButtonPopup | 1 | 在这种模式下,工具按钮会显示一个特殊的箭头,表示存在菜单。 按下按钮的箭头部分时显示菜单。 |
QToolButton::InstantPopup | 2 | 当按下工具按钮时,菜单会立即显示。 在这种模式下,按钮自身的动作不会被触发。 |
属性
- arrowType : Qt::ArrowType
- popupMode : ToolButtonPopupMode
- toolButtonStyle : Qt::ToolButtonStyle
函数
//获取箭头类型
Qt::ArrowType arrowType() const
//是否隆起
bool autoRaise() const
//默认Action
QAction *defaultAction() const
//获取默认QMenu
QMenu *menu() const
//按钮和图标显示的位置关系
QToolButton::ToolButtonPopupMode popupMode() const
//设置按钮类型
void setArrowType(Qt::ArrowType type)
//设置是否隆起
void setAutoRaise(bool enable)
//设置按钮菜单
void setMenu(QMenu *menu)
//设置按钮和图标显示的位置关系
void setPopupMode(QToolButton::ToolButtonPopupMode mode)
//获取按钮和图标显示的位置关系
Qt::ToolButtonStyle toolButtonStyle() const
重新实现的公有函数
//重新实现属性的访问函数:QWidget::minimumSizeHint。
QSize sizeHint() const override;
//重新实现属性的访问函数:QWidget::sizeHint。
QSize minimumSizeHint() const override;
公有槽函数
void setDefaultAction(QAction *action)
- checkable
- checked
- enabled
- font
- icon
- popupMode
- statusTip
- text
- toolTip
- whatsThis
//设置按钮样式
void setToolButtonStyle(Qt::ToolButtonStyle style)
//显示menu
void showMenu()
信号
void triggered(QAction *action)
重新实现的保护函数
virtual void actionEvent(QActionEvent *event) override
virtual void changeEvent(QEvent *e) override
virtual void checkStateSet() override
virtual void enterEvent(QEnterEvent *e) override
virtual bool event(QEvent *event) override
virtual bool hitButton(const QPoint &pos) const override
virtual void leaveEvent(QEvent *e) override
virtual void mousePressEvent(QMouseEvent *e) override
virtual void mouseReleaseEvent(QMouseEvent *e) override
virtual void nextCheckState() override
virtual void paintEvent(QPaintEvent *event) override
virtual void timerEvent(QTimerEvent *e) override
例子
QMenu *pMenu = new QMenu(this);
pMenu->setTitle("这是一个菜单");
pMenu->addAction(new QAction("aaaa1"));
pMenu->addAction(new QAction("aaaa2"));
ui->tb1->setText("工具按钮1");
QIcon icon(":/res/icon/xlistwidgetvt.png");
//设置图标
ui->tb1->setIcon(icon);
//常压弹起
ui->tb1->setPopupMode(QToolButton::DelayedPopup);
ui->tb1->setMenu(pMenu);
ui->tb2->setText("工具按钮2");
ui->tb2->setIcon(icon);
ui->tb2->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
//点小箭头弹起
ui->tb2->setPopupMode(QToolButton::MenuButtonPopup);
ui->tb2->setMenu(pMenu);
ui->tb3->setText("工具按钮3");
ui->tb3->setIcon(icon);
ui->tb3->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
//点击弹出
ui->tb3->setPopupMode(QToolButton::InstantPopup);
ui->tb3->setMenu(pMenu);
//设置文字和图标方向
ui->tb4->setIcon(icon);
ui->tb4->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
ui->tb4->setMenu(pMenu);
//自动隆起
ui->tb5->setAutoRaise(true);
//设置箭头方向
ui->tb6->setArrowType(Qt::LeftArrow);