标准/系统 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 的确切边框颜色和宽度?的主要内容,如果未能解决你的问题,请参考以下文章