问题标签 [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 回答
207 浏览

c++ - 如何在 QPalette 中使用 QPROPERTY?

我正在尝试使用样式表中设置的 Q_PROPERTY 来更改 QPalette 中的值,这可能吗?例如,如果我在 MainWindow 小部件中将 QStyle 设置为 Fusion,是否可以使用此方法更改 Qt::Window 等?

一切编译正常,但显示的唯一颜色是黑色,所以变量可能填充了垃圾值?据我所知,样式表会覆盖其他所有内容,所以猜测一下,样式表没有为构造函数及时加载?

主窗口.cpp

主题.h

样式表.qss

0 投票
1 回答
2831 浏览

c++ - Qt - Q_PROPERTY 的 NOTIFY 信号未发出关于 MEMBER 更改

我有一个私有类成员变量status,我想在每次更改时发出一个带有其值的信号。因此我使用Q_PROPERTY并指定一个信号NOTIFY

我在构造函数中带有插槽connect的信号:statusChangedoutputStatus

当运行应用程序并通过另一个对象更改状态时,我没有得到任何输出,也没有来自 qt 的关于此问题的消息。

请注意,这不是实际的实现。在status没有任何输出的情况下,通过各种成员函数进行了很多更改。但是,connect调用以及 thestatusChanged和 theoutputStatus完全按照这个问题的方式实现。

因为Q_PROPERTY具有相同的名称,所以我认为这是一个问题的成员并将其更改Q_PROPERTY为以下内容,没有任何区别:

有谁知道问题出在哪里?

0 投票
2 回答
1260 浏览

c++ - 在 QML 中读取结构的 C++ QVector

在我的 C++ 课程中,我有

在 QML 中,我想将其作为 lon、lat 对的多维数组来访问

这可能使用 Q_Property 机制吗?因为我很确定结构不能暴露给 QML?

我已经绑定了:-

用一种方法: -

但这给了我错误:-

0 投票
1 回答
106 浏览

c++ - 如何让 Q_PROPERTYs 在设计视图中显示

我有一个从 QPushButton 派生的带有 Q_PROPERTYs 的类,但它们没有出现在设计模式的属性编辑器中。

在设计视图中有一个 QPushButton 提升为我的自定义类,我希望属性自动显示在属性编辑器中,至少是类型为“int”的属性。我很有可能误解了一些简单的事情。

以下是代码中的相关行:

代码编译得很好。

0 投票
2 回答
810 浏览

c++ - 将 C++ 对象的实例绑定到 QML 对象

我是 Qt 的新手,并且编写了一个基本应用程序,它有一个继承自 QObject 并绑定到 QML 文件的类。

我现在希望该类包含一个对象向量(假设来自一个客户类),其中包含一些数据,例如用于名称的 QString 等。

为了让生活更轻松,我将在 main 中手动创建这些对象,并在我的 QML 文件中放置一些文本字段。

我现在希望能够将特定对象绑定到 QML 文件中的特定文本字段,这样当值更改时,文本字段中的值也会更新。

如何才能做到这一点?看起来 QML 静态调用它绑定到的类的方法,而不是在分配的对象上。

我觉得 QAbstractList 在这里可能有一些用处,但不太确定。宁愿不必为我的客户类继承任何东西。

编辑:

我想我可以使用基于 QObjectList 的模型(https://doc.qt.io/qt-5/qtquick-modelviewsdata-cppmodels.html)来做我想做的事。我注意到它在底部说“视图无法知道 QList 的内容已更改。如果 QList 更改,则有必要通过再次调用 QQmlContext::setContextProperty() 来重置模型。”

这是否意味着如果 DataObject 中的值(例如名称)发生更改,则必须重置模型,或者仅当 Qlist 本身发生更改时(即添加新项目或删除项目)?如果是后者,我认为这应该很容易维护,因为我只需要在添加或删除任何内容时设置上下文属性。

0 投票
1 回答
200 浏览

c++ - 支持 Qml 的 C++ 继承

我有一组类ClassA,ClassBClassC:

每个类都有必须在 Qml 中可访问的属性,这意味着每个类都必须实现QObject该类。实现这一点的最佳方法是什么?

问候

0 投票
1 回答
62 浏览

qt - 如何从两个不同的 cpp 更新 qml 文本?

我有一个 qml 项目。

StackPage.qml 上有一个文本(名为 id:cnt),我需要从 firstclass.cpp 和 secondclass.cpp 更新此文本。

Q_PROPERTY 定义在 firstclass.h 上,setCntText 函数在 firstclass.cpp 上。

我通过 setCntText(i) 从 firstclass.cpp 更新文本,并尝试通过调用 setCntText(0) 从 secondclass.cpp 更新。

我可以从第二类设置 m_cntText 变量,但无法更新 qml 文本(命名为 id:cnt)。

主文件

头等舱.cpp

第二类.cpp

头等舱.h

二等舱.h

main.qml

StackPage.qml

0 投票
1 回答
239 浏览

c++ - Q_PROPERTY 与私有二传手

我有一个 QObject,其属性可从 QML 访问。就像是:

是否可以将 setter(setRo_text) 设为“私有”,因此不能从 QML 修改属性,但仍可以从 C++ 代码(在类内)设置?

0 投票
1 回答
45 浏览

c++ - QML 中的 C++ 方法从未调用过,仍然有效

我是 QML 的新手,看到了这段代码。它工作正常,但让我感到困惑的是方法 setUsername 从未在 qml 文件中调用过。所以我的问题是这个 Q_PROPERTY 是如何工作的。有人对此有很好的解释吗?

0 投票
1 回答
46 浏览

qt - 为什么这不在 QVector 中添加 QObject*

我有两个 ViewModelMainVMAddVM. 在main.cpp,MainVM中以这种方式声明:

MainVM,我有这个Q_PROPERTY

PROPERTY宏这样做:

在我的AddVM我有另一个Q_PROPERTYnewPlot 和一个Q_INVOKABLEaddNewPlot:

在上面AddVM.cpp,我有这些:

addNewPlot功能有这些说明:

此函数中的所有内容都按预期工作,除了mvm->plots().push_back(newPlot());行!这不会newPlotQVectorof 中添加MainVM

编辑

可能最好的方法是getter像这样在宏中重新定义:

并且我现有的代码无需任何修改即可工作。