如何子类化QWidget实现添加QToolBar

如何子类化QWidget实现添加QToolBar,第1张

不知道为什么不同QMainWindow?

QToolBar也是一个QWidget,把它放进布局里就行了。

要是想能浮动,挺困难,还不如用QMainWindow方便。

在Qt开发中经常遇到这样的情况,想把一个按钮布局在QToolBar的右侧。通常人会想到使用QSpacerItem加入在toolbar上,但是这不起作用,因为QSpacerItem并不是从QWidget继承过来的,所以并不能使用addWidget()。当然,作为替代方案,可以使用一个基本的 QWidget,将他的大小策略设置为自动扩展的,代码如下:

?

QWidget* spacer = new QWidget()

spacer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding)

// toolBar is a pointer to an existing toolbar

toolBar->addWidget(spacer)

toolBar->addAction("Right-aligned button")

这是一个很有用的技巧,虽然简单但是很实用。

当使用QToolBar::addAction()添加一个新的(或已存在的)QAction至工具栏时,工具按钮通常被创建 。也可以用同样的方式构建工具按钮和其它部件,并设置它们的布局。

QToolButton支持自动浮起,在自动浮起模式中,只有在鼠标指向它的时候才绘制三维框架。当按钮被用在QToolBar里时,这个特征会被自动启用,可以使用setAutoRaise()来改变。

按钮的外观和尺寸可通过setToolButtonStyle()和setIconSize()来调节。当在QMainWindow的QToolBar里使用时,按钮会自动地调节来适合QMainWindow的设置(见QMainWindow::setToolButtonStyle() 和QMainWindow::setIconSize())。

工具按钮可以提供一个d出菜单,使用setMenu()来进行设置。通过setPopupMode()来设置菜单的d出模式,缺省模式是DelayedPopupMode,这个特征有时对于网页浏览器中的“后退”按钮有用,在按下按钮一段时间后,会d出一个显示所有可以后退浏览的可能页面的菜单列表,默认延迟600毫秒,可以用setPopupDelay()进行调整。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11486032.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存