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(突起)。
上图的toolBar中只有鼠标放在按钮上才能显示,否则没有突起效果,跟界面中间四个按钮则不同。
在构造函数中,设置toolBar中按钮的autoRaise为false。效果如下。
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);
运行效果如下。
三个分别对应的效果是DelayedPopup,MenuButtonPopup,InstantPopup。