问题标签 [qproperty]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
336 浏览

c++ - QML 指针属性更改信号未传播到绑定属性

我向 qml 公开了一个指针变量,如下所示:

水果:

MyClass.h:

我的类.cpp:

我在 QML 中使用它如下:

问题是每当我发出featuredFruitChanged时,绑定 qml 属性都没有收到更改信号。
怎么了?!这是 Qt 框架的错误吗?有什么建议吗?

我也尝试在 C++ 中重载相等运算符但没有成功

更新:

好的,我在示例代码中添加了更多精度,以便更轻松地重现问题。
修正了我的示例代码中的错字(感谢@ihor-dracuk)。问题还存在。

0 投票
0 回答
150 浏览

qt - 在 Q_PROPERTY 中使用自定义类型

我无法在 Q_PROPERTY MEMBER 中使用自定义类型。

头文件.h

主文件

当我编译代码时,我得到以下错误。

是否必须为自定义类提供operator!= ?

顺便提一下,如果我改变我的测试类如下它编译。

为什么我不能将MEMBER用于自定义类型?

0 投票
1 回答
191 浏览

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

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

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

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

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

问题 1)

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

问题2)

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

0 投票
0 回答
132 浏览

c++ - 无法将值从 Qt 推送到 QML

我正在尝试通过 Qt 从 mysql db 读取一个值并将该值推送到 QML(特别是 CircularGauge 表盘)。我成功地读取了 db 值并将其打印到 Qt 中的控制台。当我尝试将值公开给 QML 时,它不会反映在 QML 仪表板中。以下是我的文件:-

qml.h

qml.cpp

主文件

main.qml

0 投票
2 回答
196 浏览

c++ - 枚举属性未被识别为

我一直在尝试实现一些我认为应该非常简单的东西,但是遇到了问题。简而言之,我有一个包含一些 的类,其中Q_Properties一些我想成为命名空间级别的enum值。我的问题是,如果我将enum其移动namespace到单独的文件中,QProperty系统将无法识别该属性是一个enum值。

这是一个精简的版本来说明:

一个文件包含一个带有枚举的命名空间以及我尝试与枚举一起使用的类:

我的头文件包含另一个命名空间和枚举:

我的主要:

当我运行这个程序时,它输出以下内容:

如您所见,在与类相同的文件中声明的枚举在属性系统中按预期工作,但在头文件中声明的枚举未被识别为枚举。我该如何解决这个问题?我已经删除了构建文件夹,重新运行qmake,我能想到的一切都很明显,没有任何变化。

0 投票
2 回答
347 浏览

c++ - 如何将 Q_PROPERTY 与静态类成员一起使用

我是 Qt 的新手,遇到了 Q_PROPERTY 类,并试图使用它设置一个静态成员。这是我到目前为止所拥有的:

当我尝试运行它时出现编译错误,所以我不确定是否有办法将静态成员与 Q_PROPERTY 一起使用。我已经阅读了他们的文档和其他论坛回复,但我仍然不清楚使用 Q_PROPERTY 的目的。

0 投票
0 回答
40 浏览

c++ - Qt 6 代码中的属性:QML 的新属性有什么好处?

在新代码中,如果我在 C++ 端不需要 Qt 6 的绑定机制,我是否应该将属性标记为 BINDABLE(将它们声明为 QObjectBindableProperty),我从 C++ 定义的 QML 类型是否可以从使用 QObjectBindableProperty 中获得任何好处?

Qt 6 可绑定属性是在 Qt 6.0 中引入的,具有惰性评估机制以提高整体绑定性能。后来观察到 Qt 中的许多现有属性与惰性 eval 不兼容,并且 Qt 6.1/6.2 中的可绑定属性不再惰性 eval,因此惰性 eval 没有性能改进,但可能还有其他原因将 QML 类型的属性声明为 Q_OBJECT_BINDABLE_PROPERTY?

0 投票
1 回答
45 浏览

c++ - 如何从 qml 中 MyClass * 的 Q_PROPERTY 访问 QStringlist 的 Q_PROPERTY?

我遇到了以下代码的问题,我想从包含 qstringlist 的类指针的 q_property 访问 qstringlist。我已经添加了与问题相关的所有代码。

播放器.hpp

此类适用于将要创建的玩家

分数输入.hpp

此类创建新玩家并附加到 m_playerList。

主文件

scoreinput.qml

我只在第一个索引而不是另一个索引上获得价值。而且我也无法为分数模型分配值。 应用截图

我想访问和更改不同玩家的分数。

0 投票
1 回答
20 浏览

c++ - 为拥有自己的 Q_PROPERTY 的 QObject 创建一个 Q_PROPERTY

我有QInnerItem两个 Q_PROPERTIES

由a和 intQOuterItem组成的 a 。QInnerItem

这给了我错误:

moc_Model.cpp:264: error: C2280: 'QInnerItem &QInnerItem::operator =(const QInnerItem &)': attempting to reference a deleted function

我相信这是因为 QObject 有一个明确删除的复制赋值运算符:https ://doc.qt.io/qt-5/qobject.html#no-copy-constructor-or-assignment-operator

有没有办法在m_bar没有复制赋值运算符的情况下访问引用?

从同一个链接,它还说:

“主要的结果是你应该使用指向 QObject(或你的 QObject 子类)的指针,否则你可能会试图使用你的 QObject 子类作为值。例如,没有复制构造函数,你不能使用一个子类QObject 作为要存储在容器类之一中的值。您必须存储指针。”

所以我试过:

但这给出了完全相同的错误。

我怎样才能实现我想要做的事情?即:有一个具有属性的 QObject,其中一个属性是具有它自己的属性的 QObject。