gpt4 book ai didi

qt - 如何在 QT Designer 中更改 QT 线条小部件的颜色

转载 作者:行者123 更新时间:2023-12-03 17:38:11 26 4
gpt4 key购买 nike

Kaveish 提供了一段很好的代码来处理这个问题
How does designer create a Line widget?
我如何将这些线条的颜色从黑色默认颜色更改为蓝色。

谢谢你的帮助

最佳答案

根据您的需要,有几种不同的方法可以做到这一点。我将用 Python 发布示例,但移植到 C++ 已经很简单了。

设置 QPalette

如果要保持当前样式的外观,可以尝试设置调色板颜色。这在具有默认 Breeze 和 Oxygen 样式的 Linux 上运行良好:

palette = self.line.palette()
palette.setColor(palette.Window, QtGui.QColor(QtCore.Qt.lightGreen)
self.line.setPalette(palette)

不幸的是,并非所有主题/样式都以相同的方式实现,Windows 和 Fusion 样式都需要为 palette.Dark 设置颜色。角色,这使得整个解决方案非常依赖于平台和风格,因为用户可以安装他/她自己的风格。

样式表

样式表解决方案需要实现 border QFrame 小部件子类的属性,但看起来并不总是很好,最好是 setFixedHeight (或垂直线的宽度)最大为 2 像素。
self.line.setStyleSheet('''
MyLineClass {
border: 0.5px solid green;
border-style: inset;
}
''')

QPaintEvent

然后是自定义油漆解决方案。这是一个简单的实现,可以获得类似于氧气“平滑”线的效果。
class MyHorizontalLine(QtWidgets.QWidget):
grad = QtGui.QLinearGradient(0, 0, 1, 0)
grad.setCoordinateMode(self.grad.StretchToDeviceMode)
grad.setCoordinateMode(self.grad.ObjectBoundingMode)
grad.setColorAt(0, QtGui.QColor(QtCore.Qt.transparent))
grad.setColorAt(.5, QtGui.QColor(QtCore.Qt.darkGray))
grad.setColorAt(1, QtGui.QColor(QtCore.Qt.transparent))
gradPen = QtGui.QPen(QtGui.QBrush(grad), 1)

def paintEvent(self, event):
qp = QtGui.QPainter(self)
qp.setRenderHints(qp.Antialiasing)
qp.translate(.5, self.rect().center().y() - .5)
qp.setPen(self.gradPen)
qp.drawLine(0, 0, self.width(), 0)
qp.translate(0, 1)
qp.setOpacity(.5)
qp.drawLine(0, 0, self.width(), 0)

关于qt - 如何在 QT Designer 中更改 QT 线条小部件的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43504786/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com