c++ - 具体QPushButton样式

标签 c++ qt user-interface qtstylesheets qpushbutton

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

Button images

我真正想要的是特征图像位置和它侧面的文字,也许如果我幸运的话我也可以得到这样的边框,但我真的不需要标题下面的小描述:) 我可以只使用 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/

相关文章:

python - 将 .ui 转换为 .py

c++ - 如何编写 Qt HTTP GET 请求?

qt - 打开和关闭附加窗口 (QML)

java - 按键事件 : Making multiple inputs work together

ios - iPad - 同时更改 View 上所有元素的文本颜色

java - 在 Java 中使用 Swing 图标、编号的 .jpg 图像和 for 循环进行动画

c++ - 带 const 且不带 const 限定符的 typedef

c++ - 多种形式的C++处理错误/异常

c++ - 将 ifstream 作为参数传递给类构造函数

c# - 字典查找与数组查找;数组分配与字典分配