Kaveish提供了一个很好的代码片段来处理这个问题How does designer create a Line widget?我该如何将这些线条的颜色从它们的默认黑色更改为蓝色。
感谢任何帮助
Kaveish提供了一个很好的代码片段来处理这个问题How does designer create a Line widget?我该如何将这些线条的颜色从它们的默认黑色更改为蓝色。
感谢任何帮助
根据您的需求,有几种不同的方法可以实现这一点。我将在此处提供Python示例,但转换为C++也很简单。
如果您想保持当前样式的外观,可以尝试设置调色板颜色。这在Linux上使用默认的Breeze和Oxygen样式非常有效:
最初的回答:
palette = self.line.palette()
palette.setColor(palette.Window, QtGui.QColor(QtCore.Qt.lightGreen)
self.line.setPalette(palette)
palette.Dark
角色的颜色,这使得整个解决方案非常依赖于平台和样式,因为用户可能已经安装了自己的样式。
border
属性,但并不总是看起来很好,最好将setFixedHeight
(或垂直线的宽度)设置为最大2像素。self.line.setStyleSheet('''
MyLineClass {
border: 0.5px solid green;
border-style: inset;
}
''')
还有一种自定义绘图的解决方案。这是一种简单的实现,可以获得类似于氧气“平滑”线条的效果。
最初的回答:
还有一个自定义绘图的解决方案。这是一种简单的实现,可以获得类似于氧气“平滑”线条的效果。
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)
QFrame *verticalLine = new QFrame(this);
verticalLine->setFrameShape(QFrame::VLine);
verticalLine->setStyleSheet("color: rgb(221, 221, 221)");
#line, #line_2 {
background-color: rgb(0, 0, 255);
}
这里,line 和 line_2
是行 (: 并且在小部件类中:
line->setStyleSheet(QString("background-color: #0000FF;"));
color
属性,就像这样:#line{color: white;}
- Vader B