C++ 特定的QPushButton样式

C++ 特定的QPushButton样式,c++,qt,user-interface,qtstylesheets,qpushbutton,C++,Qt,User Interface,Qtstylesheets,Qpushbutton,如何自定义QPushButton或QToolButton的外观,使其看起来像elementaryos的网页“按钮” 我真正想要的是图像的特征位置和侧边的文字,如果幸运的话,我也可以得到这样的边框,但我并不需要标题下面的小说明:) 我可以只使用样式表吗,或者我必须子类QPushButton/QAbstractButton/类似的东西吗?我已经到处搜索过了,但是没有找到像在固定位置画东西这样的定制级别,这正是我不想要的 编辑: 我真的很想找到一个解决方案,让我有一个可定制的按钮,而不是一个固定的形

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

我真正想要的是图像的特征位置和侧边的文字,如果幸运的话,我也可以得到这样的边框,但我并不需要标题下面的小说明:) 我可以只使用样式表吗,或者我必须子类QPushButton/QAbstractButton/类似的东西吗?我已经到处搜索过了,但是没有找到像在固定位置画东西这样的定制级别,这正是我不想要的

编辑: 我真的很想找到一个解决方案,让我有一个可定制的按钮,而不是一个固定的形象,在轨道的东西

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

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


您可能必须执行的文本覆盖了paintEvent。

有许多方法可以工作

您可以首先考虑用一个<代码> qvBOXFrase编写一个具有正常<代码> QPushButton <代码>的解决方案。您可以添加三个
qlabel
;一个用于标题文本,一个用于标题文本,一个用于图像。一些CSS可能会被用来渲染按钮的背景图像,用于向上和向下,更多的CSS会在两个标签中设置文本样式,并将图像放置在第三个标签上,但是当单击按钮时,您会发现标签不会向下移动

我认为最好的解决办法是直接绘画。您可以通过对
QWidget
进行子分类并覆盖
paintEvent()
来实现这一点。渲染“向上”状态的所有内容,并将“向下”状态的所有内容上下移动一点

通过将向上和向下状态呈现为
QImage
并使用CSS设置QPushbutton的样式,可以实现这一点,而无需进行子分类


这些方法也有多种组合。

答案取决于更具体的要求。您可以通过一个样式表和两个图像实现您在图像中看到的内容;“向上”图像和“向下”(按下)图像。但是,如果您只想指定文本和图标图像,并让button小部件像示例一样呈现样式化,那么这将需要更复杂的解决方案,可能是子分类。您应该编辑您的问题,使其更具体。我最终使用QPaint并手动绘制按钮,我在一个灵活的MainButton(QString标题、QString描述、QImage图标)类中获得了所有内容!:D谢谢!