标准/系统 QLineEdit 的确切边框颜色和宽度?

Posted

技术标签:

【中文标题】标准/系统 QLineEdit 的确切边框颜色和宽度?【英文标题】:Exact border color and width of standard/system QLineEdit? 【发布时间】:2021-10-13 14:22:04 【问题描述】:

有人知道标准/系统 QLineEdit 的边框颜色吗?黑色/看起来太暗了。它看起来有点灰色,但想要确切的颜色。

还有,边框宽度是1px吗?

【问题讨论】:

没有标准/系统颜色,因为它取决于样式,同样取决于几何形状。 print(app.style().metaObject().className()) 的输出是什么? QWindowsVistaStyle 对于某些样式,根本不可能确定某些颜色,因为它们使用本机主题引擎,在绘制时可能会绕过调色板。 Windows Vista 风格就是这样。 @Dennis 此样式使用 Windows API 进行绘画,因此 Qt 不知道这些颜色,更多信息请查看源代码:github.com/qt/qtbase/blob/5.15.2/src/plugins/styles/… 就我个人而言,我从不乱用一般的字体、颜色等——这应该始终是用户的选择。如果您开始尝试强加自己的选择,总会有至少一位用户抱怨这完全破坏了他们的主题。 【参考方案1】:

没有“标准/系统”边框颜色和边框大小。这取决于:

操作系统; 操作系统可能的样式自定义; 正在使用的 Qt 样式(可能取决于也可能不取决于操作系统); 可用于样式表的自定义;

颜色可以基于当前调色板的颜色,但每种样式(和操作系统)都以不同的方式使用这些颜色,在某些情况下甚至使用像素图绘制。 p>

可能用于绘制边框的color roles是:

QPalette.WindowText QPalette.Text QPalette.Midlight QPalette.Dark QPalette.Mid QPalette.Shadow

帧宽度可以基于PM_DefaultFrameWidth像素度量,可以通过以下方式查询:

# within an existing QLineEdit instance

opt = QtWidgets.QStyleOptionFrame()
self.initStyleOption(opt)
border = opt.lineWidth

# without a QLineEdit, from any other widget
style = self.style()
# or from the app
opt = QtWidgets.QStyleOptionFrame()
style = QtWidgets.QApplication.style()
border = style.pixelMetric(QtWidgets.QStyle.PM_DefaultFrameWidth, opt)

但是,如上所述,返回的颜色和值可能与实际结果一致,也因为样式可能会进行一些调整并添加可能增加/减少可见边框的图形效果宽度并更改其外观。

【讨论】:

以上是关于标准/系统 QLineEdit 的确切边框颜色和宽度?的主要内容,如果未能解决你的问题,请参考以下文章

隐藏 QPushButton 和 QLineEdit 边框

是否可以在 PyQt/PySide2 中为 QLineEdit 的文本制作“破碎”边框

Qt 搜索框

第八节课

样式化 QLineEdit 的背景颜色闪烁

在实体框架中找出导致异常的确切实体