如何自定义QPushButton或QToolButton的外观以使其看起来像elementaryos的网页“按钮”?
所有我真正想要的是特色图像位置和它旁边的文字,也许如果我很幸运我也可以得到这样的边框,但我真的不需要标题下方的小描述:) 我可以只使用StyleSheets,或者我必须继承QPushButton / QAbstractButton /类似的东西吗?我已经到处搜索,但没有发现自定义的级别没有在固定位置绘制内容,这正是我不想要的。
编辑: 我真的想要一个解决方案,它可以让我获得一个可自定义的按钮,而不是一个固定的图像,在
的轨道上的东西MainWindowButton(QString(title), /*opt*/QString(description), QImage(icon));
答案 0 :(得分:1)
您可以使用右侧角落的图标将背景设置为白色,并使用border-image stylesheet属性,其中底部边框与图标一样高,顶部,左右边框宽度为0像素。你需要制作一个自定义图像,它基本上看起来像左边和顶部有几个像素宽度的白色图标
http://doc.qt.digia.com/qq/qq20-qss.html#theboxmodel
您可能必须覆盖paintEvent的文本。
答案 1 :(得分:1)
有许多方法可行。
您可能首先考虑尝试使用普通QPushButton
和QVBoxLayout
来构建解决方案。你可以添加三个QLabels
;一个用于标题文本,一个用于标题文本,一个用于图像。一些CSS可能用于渲染上下按钮的背景图像,更多CSS用于设置两个标签中的文本样式,并将图像定位在第三个标签上,但随后您会发现标签不会向下移动点击按钮。
我认为最好的解决方案是直接绘画。您可以通过对QWidget
进行子类化并覆盖paintEvent()
来完成此操作。为up状态渲染所有内容,并将所有内容一点一点地向下移动以进入向下状态。
您可以通过将上下状态呈现为QImage
并使用CSS为它们设置QPush按钮样式而无需子类化来实现此目的。
这些方法也有很多种组合。