我想将 QLineEdit 的边框颜色更改为红色。
如果我这样做:
_lineEdit->setStyleSheet("border : 1px solid red");
线条编辑的形状从默认值更改,并且焦点上的边框颜色停止发生变化。
我的想法是采用 Qt 颜色和 QLineEdit 形状的默认值,并使用
setStyleSheet()
设置它们,但将边框颜色更改为红色。但我怎样才能以编程方式获取这些值呢?
我看到了问题如何仅更改 QLineEdit 边框颜色,但没有回答。
对于我们来说,单独设置属性很有效。无需知道默认值。
这是一个我们在鼠标悬停时更改框架颜色的示例:
lineEdit->setStyleSheet("QLineEdit {border-width: 1px; border-style: solid; border-color: red;}"
"QLineEdit:hover {border-width: 1px; border-style: solid; border-color: blue;}");
我希望这对你有帮助。
不太明白你想要什么,但如果我明白你需要的:
line.setStyleSheet("border : 1px solid red; padding-top: 2px; padding-bottom: 2px; border-radius: 2px");
如果您需要处理对象状态,请查看此处 -> https://doc.qt.io/qt-5/stylesheet-reference.html
你需要“伪状态列表”
我刚刚在我的Python脚本中遇到了这个问题,并找到了一个旧答案为我解决了这个问题:
不要尝试使用自定义样式表恢复精确的外观,而只需保存原始样式表,然后在必要时恢复它。在 Python 中,这看起来像这样:
lineedit = QLineEdit()
lineedit.setText("Some Text")
if some_condition: #Set red border
self.oldstyle = lineedit.styleSheet()
lineedit.setStyleSheet("border: 1px solid red")
else: #Restore original
lineedit.setStyleSheet(self.oldstyle)
在我的测试中,焦点上的颜色变化随后按预期工作。
根据 QWidget
的
C++ Qt 文档,该版本也支持样式表,因此它应该以相同的方式工作。