如何自定义 QPushButton 或 QToolButton 的外观,使其看起来像elementaryos 的网页“按钮”?
我真正想要的是特征图像位置和它侧面的文字,也许如果我幸运的话我也可以得到这样的边框,但我真的不需要标题下面的小描述:) 我可以只使用 StyleSheets 来做到这一点,还是必须子类化 QPushButton/QAbstractButton/类似的东西?我已经到处搜索过,但没有找到那种级别的定制,无需在固定位置绘制某些东西,而这正是我不想要的。
编辑: 我真的想要一种解决方案,它可以为我提供一个可自定义的按钮,而不是固定的图像按钮,而是跟踪
MainWindowButton(QString(title), /*opt*/QString(description), QImage(icon));
最佳答案
有许多可行的方法。
您可能首先考虑尝试使用普通的 QPushButton
及其上的 QVBoxLayout
来编写解决方案。您可以添加三个QLabels
;一种用于标题文本,一种用于说明文字,一种用于图像。一些 CSS 可能用于渲染向上和向下按钮的背景图像,更多的 CSS 可以用于设置两个标签中文本的样式并将图像定位在第三个标签上,但是您会发现标签在以下情况下不会向下移动:单击该按钮。
我认为最好的解决方案是直接绘画。您可以通过子类化 QWidget
并覆盖 paintEvent()
来实现此目的。为向上状态渲染所有内容,并为向下状态稍微上下移动所有内容。
您可以通过将向上和向下状态渲染到 QImage
并使用 CSS 设置 QPushbutton 的样式来实现此目的,而无需子类化。
这些方法也有多种组合。
关于c++ - 具体QPushButton样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13655018/