获取 QLineEdit 的 Qt 默认样式,仅更改其边框颜色

问题描述 投票:0回答:3

我想将 QLineEdit 的边框颜色更改为红色。

如果我这样做:

_lineEdit->setStyleSheet("border : 1px solid red");

线条编辑的形状从默认值更改,并且焦点上的边框颜色停止发生变化。

我的想法是采用 Qt 颜色和 QLineEdit 形状的默认值,并使用

setStyleSheet()
设置它们,但将边框颜色更改为红色。但我怎样才能以编程方式获取这些值呢?

我看到了问题如何仅更改 QLineEdit 边框颜色,但没有回答。

c++ qt
3个回答
1
投票

对于我们来说,单独设置属性很有效。无需知道默认值。
这是一个我们在鼠标悬停时更改框架颜色的示例:

lineEdit->setStyleSheet("QLineEdit {border-width: 1px; border-style: solid; border-color: red;}"
                        "QLineEdit:hover {border-width: 1px; border-style: solid; border-color: blue;}");

我希望这对你有帮助。


1
投票

不太明白你想要什么,但如果我明白你需要的:

line.setStyleSheet("border : 1px solid red; padding-top: 2px; padding-bottom: 2px; border-radius: 2px");

如果您需要处理对象状态,请查看此处 -> https://doc.qt.io/qt-5/stylesheet-reference.html

你需要“伪状态列表”


0
投票

我刚刚在我的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 文档
,该版本也支持样式表,因此它应该以相同的方式工作。

© www.soinside.com 2019 - 2024. All rights reserved.