0
点赞
收藏
分享

微信扫一扫

Qt入门系列开发教程【基础控件篇】QToolButton

尤克乔乔 2022-01-14 阅读 36

QToolButton

共有类型

 enum ToolButtonPopupMode { DelayedPopup, MenuButtonPopup, InstantPopup }
enum QToolButton::ToolButtonPopupMode描述
QToolButton::DelayedPopup0按住工具按钮一段时间后(超时取决于样式,请参阅 QStyle::SH_ToolButton_PopupDelay),将显示菜单。 一个典型的应用示例是某些 Web 浏览器工具栏中的“后退”按钮。 如果用户单击它,浏览器会简单地浏览回上一页。 如果用户按住按钮一段时间,工具按钮会显示一个包含当前历史列表的菜单
QToolButton::MenuButtonPopup1在这种模式下,工具按钮会显示一个特殊的箭头,表示存在菜单。 按下按钮的箭头部分时显示菜单。
QToolButton::InstantPopup2当按下工具按钮时,菜单会立即显示。 在这种模式下,按钮自身的动作不会被触发。

属性

  • arrowType : Qt::ArrowType
  • autoRaise : bool
  • 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);
举报

相关推荐

0 条评论