问题标签 [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.
c++ - 如何在 QPalette 中使用 QPROPERTY?
我正在尝试使用样式表中设置的 Q_PROPERTY 来更改 QPalette 中的值,这可能吗?例如,如果我在 MainWindow 小部件中将 QStyle 设置为 Fusion,是否可以使用此方法更改 Qt::Window 等?
一切编译正常,但显示的唯一颜色是黑色,所以变量可能填充了垃圾值?据我所知,样式表会覆盖其他所有内容,所以猜测一下,样式表没有为构造函数及时加载?
主窗口.cpp
主题.h
样式表.qss
c++ - Qt - Q_PROPERTY 的 NOTIFY 信号未发出关于 MEMBER 更改
我有一个私有类成员变量status
,我想在每次更改时发出一个带有其值的信号。因此我使用Q_PROPERTY
并指定一个信号NOTIFY
:
我在构造函数中带有插槽connect
的信号:statusChanged
outputStatus
当运行应用程序并通过另一个对象更改状态时,我没有得到任何输出,也没有来自 qt 的关于此问题的消息。
请注意,这不是实际的实现。在status
没有任何输出的情况下,通过各种成员函数进行了很多更改。但是,connect
调用以及 thestatusChanged
和 theoutputStatus
完全按照这个问题的方式实现。
因为Q_PROPERTY
具有相同的名称,所以我认为这是一个问题的成员并将其更改Q_PROPERTY
为以下内容,没有任何区别:
有谁知道问题出在哪里?
c++ - 在 QML 中读取结构的 C++ QVector
在我的 C++ 课程中,我有
在 QML 中,我想将其作为 lon、lat 对的多维数组来访问
这可能使用 Q_Property 机制吗?因为我很确定结构不能暴露给 QML?
我已经绑定了:-
用一种方法: -
但这给了我错误:-
c++ - 如何让 Q_PROPERTYs 在设计视图中显示
我有一个从 QPushButton 派生的带有 Q_PROPERTYs 的类,但它们没有出现在设计模式的属性编辑器中。
在设计视图中有一个 QPushButton 提升为我的自定义类,我希望属性自动显示在属性编辑器中,至少是类型为“int”的属性。我很有可能误解了一些简单的事情。
以下是代码中的相关行:
代码编译得很好。
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 本身发生更改时(即添加新项目或删除项目)?如果是后者,我认为这应该很容易维护,因为我只需要在添加或删除任何内容时设置上下文属性。
c++ - 支持 Qml 的 C++ 继承
我有一组类ClassA
,ClassB
和ClassC
:
每个类都有必须在 Qml 中可访问的属性,这意味着每个类都必须实现QObject
该类。实现这一点的最佳方法是什么?
问候
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
c++ - Q_PROPERTY 与私有二传手
我有一个 QObject,其属性可从 QML 访问。就像是:
是否可以将 setter(setRo_text) 设为“私有”,因此不能从 QML 修改属性,但仍可以从 C++ 代码(在类内)设置?
c++ - QML 中的 C++ 方法从未调用过,仍然有效
我是 QML 的新手,看到了这段代码。它工作正常,但让我感到困惑的是方法 setUsername 从未在 qml 文件中调用过。所以我的问题是这个 Q_PROPERTY 是如何工作的。有人对此有很好的解释吗?
qt - 为什么这不在 QVector 中添加 QObject*
我有两个 ViewModelMainVM
和AddVM
. 在main.cpp
,MainVM
中以这种方式声明:
在MainVM
,我有这个Q_PROPERTY
:
PROPERTY
宏这样做:
在我的AddVM
我有另一个Q_PROPERTY
newPlot 和一个Q_INVOKABLE
addNewPlot:
在上面AddVM.cpp
,我有这些:
和addNewPlot
功能有这些说明:
此函数中的所有内容都按预期工作,除了mvm->plots().push_back(newPlot());
行!这不会newPlot
在QVector
of 中添加MainVM
!
编辑
可能最好的方法是getter
像这样在宏中重新定义:
并且我现有的代码无需任何修改即可工作。