2

如何自定义 QPushButton 或 QToolButton 的外观,使其看起来像elementaryos 的网页“按钮”?

按钮图像

我真正想要的只是特征图像位置和它侧面的文字,也许如果我幸运的话,我也可以得到这样的边框,但我真的不需要标题下面的小描述:) 我能做到吗仅使用 StyleSheets,还是我必须继承 QPushButton/QAbstractButton/类似的东西?我已经到处搜索了,但没有找到那种水平的定制,没有像在固定的地方画东西这样的东西,这正是我想要的。

编辑:我真的很想要一个解决方案,它会给我一个可定制的按钮,而不是一个固定的图像,一些在轨道上的东西

MainWindowButton(QString(title), /*opt*/QString(description), QImage(icon));
4

2 回答 2

1

您可以使用右上角的图标将背景设置为白色,并创造性地使用border-image 样式表属性,其中底部边框与图标一样高,顶部、左侧和右侧边框的宽度为0 像素。您需要制作一个自定义图像,该图像基本上看起来像图标,左侧和顶部有几个像素宽度,是白色的

http://doc.qt.digia.com/qq/qq20-qss.html#theboxmodel

您可能需要覆盖paintEvent 的文本。

于 2012-12-01T01:48:46.983 回答
1

有许多方法可能有效。

您可能首先考虑尝试使用带有 a 的法线来组合解决QPushButton方案QVBoxLayout。您可以添加三个QLabels; 一个用于标题文本,一个用于标题文本,一个用于图像。一些 CSS 可能用于渲染按钮的背景图像向上和向下,更多 CSS 用于设置两个标签中的文本样式并将图像定位在第三个标签上,但您会发现标签不会向下移动按钮被点击。

我认为最好的解决方案是直接绘画。您可以通过子类 aQWidget并覆盖paintEvent(). 为 up 状态渲染所有内容,为 down 状态渲染所有内容。

您可以通过将 up 和 down 状态渲染为 aQImage并使用 CSS 为 QPushbutton 设置样式来实现这一点,而无需子类化。

这些方法也有许多组合。

于 2012-12-01T02:03:05.073 回答