qt 部件设置默认值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了qt 部件设置默认值相关的知识,希望对你有一定的参考价值。

17

参考技术A

qt 部件设置默认值方法如下:

如果你为edit设置了成员变量,就在父窗口的构造函数里。

在这个地方设置初始化值就可以了。

如果没有为edit设置成员变量,就在父窗口的初始化函数,比如OnInitDialog里,手动设置初始值。

从TComponent派生出了一个组件。
type
TMy = class(TComponent)
private
Private declarations
Fi:integer;
protected
Protected declarations
public
Public declarations
published
Published declarations
property kk:integer read Fi write Fi default 2;
end;

从样式表解析属性值以绘制自定义小部件

【中文标题】从样式表解析属性值以绘制自定义小部件【英文标题】:Parsing property values from stylesheet for drawing custom widgets 【发布时间】:2021-03-11 07:00:04 【问题描述】:

我必须创建几个自定义 qt 小部件,其中一些使用自定义绘图。 这些小部件应通过公司 qt 样式表设置样式。

这产生了一些自定义小部件需要从样式表中检索已应用于QMainWindowQApplication 的值的问题。 这个值可以是 qt 的官方属性之一,也可以是一些自定义的qproperty-... 属性

但是,从小部件访问它们并非易事。一种选择是获取样式表字符串并手动解析/正则表达式出我感兴趣的值。这显然是一个糟糕的解决方案,因为 qt 必须已经具有一些功能来解析在绘制官方 qt 小部件期间使用的样​​式表数据.

... Qt 创建了一个名为 QStyleSheetStyle 的 QStyle 子类。这意味着 您可以通过普通的 QStyle 方法查询样式表信息 ...

问题 1)

This post 解决了这个想法,但遗憾的是没有详细说明如何实际实现这一点。由于缺乏经验,即使在深入研究了 qt 的源代码之后,我也无法找到如何做到这一点。

问题 2)

我认为这仅适用于常规 qt 属性(而不适用于自定义 qproperty-... 属性)。 与这种方法相比,有没有更好的方法来访问它们?

# example for retrieving qproperty-offset
def get_offset(self):
    return self._offset

def set_offset(self, offset:int):
    self._offset = offset
    self.update()

offset = QtCore.Property(int, get_offset, set_offset)

【问题讨论】:

【参考方案1】:

不,目前不可能,因为 Qt 样式表的实现是通过作为私有 Qt API 一部分的 QStyle 实现的,在 Qt6 中它旨在公开该样式。所以从样式表中获取属性的解决方案是通过qproperty。

【讨论】:

感谢您的澄清。您是否可以使用 QtCore.Property 来获取“官方”属性,或者仅使用以 qproperty-... 前缀开头的属性?另外,不幸的是,wiki.qt.io/New_Features_in_Qt_6.0 似乎不包含您描述的 QStyle 修复。

以上是关于qt 部件设置默认值的主要内容,如果未能解决你的问题,请参考以下文章

更改默认小部件大小

Qt:类中变量的默认值

是否可以为 Text 小部件提供默认值?

java中在一个类中如何设定默认值

如何在 QT Designer 中指定默认文本光标小部件

PyQt:初始化重置的默认值