Qt之QToolButton属性验证

箭头属性

属性说明

arrowType : Qt::ArrowType

这个属性决定按钮是否用一个箭头代替常规图片

这个属性默认是Qt::NoArraw. (有上下左右四个箭头类型)

访问接口:
       arrowType()
       setArrowType()

示例

    ui->toolButton->setArrowType(Qt::UpArrow);
    ui->toolButton_2->setArrowType(Qt::DownArrow);
    ui->toolButton_3->setArrowType(Qt::LeftArrow);
    ui->toolButton_4->setArrowType(Qt::RightArrow);

直接通过接口设置即可。效果如下


自动突起

属性说明

autoRaise : bool

这个属性决定是否自动突起

默认false突起。

示例

这个按钮和QPushButton的flat属性起到的作用相似。不过,当按钮是存在于toolBar中时,这个属性默认是true(不突起),而在
其他窗口中则是默认false(突起)。

Qt之QToolButton属性验证_第1张图片

上图的toolBar中只有鼠标放在按钮上才能显示,否则没有突起效果,跟界面中间四个按钮则不同。

在构造函数中,设置toolBar中按钮的autoRaise为false。效果如下。

Qt之QToolButton属性验证_第2张图片


图标文字格式

属性说明

 toolButtonStyle : Qt::ToolButtonStyle

这个属性决定工具按钮显示方式:只显示图标,只显示文本,文本在图标下方或边上(右侧)

默认Qt::ToolButtonIconOnly

想要toolbbutton跟随系统风格,可以设置为Qt::ToolButtonFollowStyle.在Unix中,将匹配用户桌面环境设置。而在其他平台则意味着直线式图标。

QToolButton的草函数会自动连接到其所在QMainWindow的相关信号上。

访问接口:
    Qt::ToolButtonStyle toolButtonStyle() const
    void setToolButtonStyle(Qt::ToolButtonStyle style)

示例

四种方式的效果如下


菜单弹出方式

属性说明

popupMode : ToolButtonPopupMode

描述工具按钮菜单弹出方式。

默认属性是DelayedPopup

访问接口:
    ToolButtonPopupMode popupMode() const
    void setPopupMode(ToolButtonPopupMode mode)

 enum QToolButton::ToolButtonPopupMode

设置后都会有三角形在右侧

QToolButton::DelayedPopup:在按下按钮并保持一段时间(时间是依赖样式的,见QStyle::SH_ToolButton_PopupDelay(描述是以毫秒为单位的一个整数)),菜单显示。典型的例子就是网页工具栏的back按钮。如果用户点击它,则返回上一个页面,如果按住不放则显示一个历史页面表。

QToolButton::MenuButtonPopup:在这个模式下,按钮会显示一个特定的箭头用来表示菜单被展示。当按箭头部分时菜单显示,否则不展示。

QToolButton::InstantPopup:当按钮按下时没有延迟,菜单立即显示。在这个模式下,按钮自身的动作不会被触发(clicked等)

示例

在toolBar中添加三个按钮,并通过setMenu设置为菜单按钮,但是设置为上述三种不同的弹出方式。

    /******************test for autoraise******************/
    QToolBar *toolbar = ui->toolBar;
    QToolButton *tBtn = new QToolButton(this);
    connect(tBtn,&QToolButton::clicked,this,[=](){
       qDebug() << "tBtn is clicked";
    });

    toolbar->addWidget(tBtn);
    //tBtn->setAutoRaise(false);
    /******************autoraise test over******************/

    /******************test for menu******************/
    QToolButton *tBtn1 = new QToolButton(this);
    connect(tBtn1,&QToolButton::clicked,this,[=](){
       qDebug() << "tBtn1 is clicked";
    });
    toolbar->addWidget(tBtn1);
    QToolButton *tBtn2 = new QToolButton(this);
    connect(tBtn2,&QToolButton::clicked,this,[=](){
       qDebug() << "tBtn2 is clicked";
    });
    toolbar->addWidget(tBtn2);
    QMenu *menu = new QMenu(this);
    menu->addAction("first item");
    menu->addAction("secend item");
    menu->addAction("third item");
    menu->addAction("four item");

    tBtn->setMenu(menu);

    tBtn1->setMenu(menu);
    tBtn1->setPopupMode(QToolButton::MenuButtonPopup);

    tBtn2->setMenu(menu);
    tBtn2->setPopupMode(QToolButton::InstantPopup);

运行效果如下。

Qt之QToolButton属性验证_第3张图片

三个分别对应的效果是DelayedPopup,MenuButtonPopup,InstantPopup。

你可能感兴趣的:(Qt5学习笔记)