问题标签 [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++ - 使用现有的 Q_PROPERTY 为继承 QObject 的 QGraphicsItem 设置动画
我有 2 个类,一个 MainWindow,我们在 QGraphicsView 中绘制一个圆圈(打算成为一个按钮!),这要归功于另一个类。MyCircle 类继承自 QObject 和 QGraphicsItem 因为我想制作动画。
我的问题如下:
我的目标是首先在我的绘图上制作一个简单的动画:让它变小然后回到原来的大小。所以我想我应该使用 QObject 类中已经存在的属性几何。
为此,我在 MainWindow.ccp 中编写
如果我不包括
我收到以下错误消息:
但如果我这样做,我得到了这个:
如果我必须自己定义所有几何属性,那么继承 QObject 的目的是什么?
希望你能帮助我,如果我的问题含糊不清,对不起,这对我来说是第一个,所以我真的不知道你的期望。
非常感谢您花时间回答。
c++ - 如何在 QQmlListProperty 属性中正确通知?
每当我Q_PROPERTY
在 Qml 中创建一个供以后使用时,我总是创建一个通知信号来告诉 qml 数据已更改并且需要重新评估。
现在有了一个Q_PROPERTY
类型QQmlListProperty<T>
,我怎么能表示一个项目已被修改、添加或删除?
这甚至可能吗?
qt - QML - 访问存储在 QList 中的 QObject 类属性
我在访问QML中的属性时遇到问题。
QList是一个属性,我可以访问它,但是当我尝试访问 QML 中classB的属性时,我收到类型错误/未定义。以下是代码:
[编辑 1] - 根据建议将 QList 更改为 QVariantList:
//ClassA.h
//ClassA.cpp
//ClassB.h
//ClassB.cpp
//main.cpp
//main.qml
如果我尝试访问,"classAObj.objList[0].val"
我会收到TypeError: Cannot read property 'val' of undefined
错误消息。我在这里做错了什么?
c++ - QList> 传入 QML
我正在尝试将 2d QList 作为 Q_PROPERTY 传递给 QML,但是,在 QML 内部,我无法实际访问任何信息。
一些代码:
c++:q_property 由构造函数中的 q_invokable 函数填充:
它返回这个:
正是我想要的。
我在main.cpp中像这样设置rootContext:
然而,在 qml 我只得到
qml: QVariant(QList<QList<QString> >)
我无法用它做任何事情。
理想情况下,我的目标是能够以这种方式从 qml 访问 2d qlist:
object.gameArray[0][1] // 返回“文本”
我可以使用常规 QLists(没有 2d)来做到这一点。任何帮助将不胜感激!
c++ - Use Q_PROPERTY's from a costum class in QML
I'm stuck with a "design/implemantation" problem in Qt. At the moment I'm not even sure if thats a smart design... That's my first post here and I don't really know where to start...
So I'll try is this way... At the moment I have something like this:
That's a "NewProperty" Class I want to have in "MyClass" cause in the end there will be much more than just a "name" Property ... The NewProject.cpp file is pretty basic at the moment...
And there will be also several MyClasses in the project.
My "MyClass" will have several "NewProperty" 's elements in the end... But I'm not sure how to pass the "NewProperty" to QML in the/a right/nice way. I tried to do something like this:
main.cpp
If I try to call something like this in the QML file:
I only get this Message: TypeError: Cannot read property 'name' of undefined
I would appreciate any help or hints for better coding...
regards,
Moe
c++ - Q_PROPERTY 发出的信号如何被捕获?
http://doc.qt.io/qt-5/qtqml-cppintegration-exposecppattributes.html
他们已经写了emit authorChanged();
。
我想知道这个信号的插槽在哪里?
authorChanged()
发出信号时,哪些代码会发生变化?
c++ - Qt Qml 连接到 Context Property 的 QObject 属性的信号
所以这似乎是一个奇怪的设置。为了简单起见,我有一个从 QObject 继承的 C++ 对象,称为“MasterGuiLogic”。它是使用指向另一个名为“MainEventBroker”的对象的指针创建的,您可能会猜到它处理我的所有应用程序事件。MasterGuiLogic 对象在 qml 中注册为上下文属性,因此它的属性可以在我的 qml 中的任何位置使用。所以 main.cpp 看起来像这样:
MasterGuiLogic 创建另一个名为 SerialCom 的类的实例,将其设置为 Q_PROPERTY,以便可以通过 MasterGuiLogic 属性在 qml 中访问它的属性和公共槽。
MasterGuiLogic.h:
MasterGuiLogic.cpp:
串行通信.h:
串行通信.cpp:
所以从 qml 很容易读取任何这些属性,甚至从 qml 向 c++ 发送信号
例如,这很好用:
问题是,我似乎找不到连接到 SerialCom 发出的信号的方法。我以为我可以做这样的事情:
这应该听 SerialCom 上的布尔属性进行更改,但我收到以下错误:
这只是意味着我无法使用上面的目标行“连接”。有没有其他方法可以连接到来自 ContextProperty 内 QObject 类型的 Q_PROPERTY 的信号?
c++ - Qt:将 C++ 类暴露给 QML 时出错
运行应用程序时,我不断收到相同的错误:
qrc:/main.qml:13: ReferenceError: _myClass is not defined
错误在哪里?
此外,如果我想将信号 myIntChanged 连接到插槽,我应该将连接放在哪里?在 main.cpp 中还是在构造函数 MyClass 中?
我的班级.h
我的类.cpp
主文件
main.qml
c++ - 我可以访问在 C++ 中声明为 MEMBER 的 QPROPERTY 吗?
我有一个QQuickItem
类,其中包含 QML 中使用的一些成员,因此它们的声明如下:
如果我想用 C++ 代码(从另一个类)访问这个成员,我有免费的get-accessor 吗?它的语法是什么?
我不清楚该文档:
如果未指定 READ 访问器函数,则需要 MEMBER 变量关联。这使得给定的成员变量可读可写,而无需创建 READ 和 WRITE 访问器函数。
这是否使成员仅在 QML 或 C++ 中可读和可写?
qt - 如何从 C++ 中删除属性上的 QML 绑定?
使用 QML,属性值可以基于另一个对象属性的值,它称为绑定,每次更新您所依赖的属性时,它都会更新您的值。
就像在这个例子中一样,implicitWidth
ofCppItem
是父级宽度的一半,并且Text
将填充布局。如果调整窗口大小,CppItem
宽度会更新。
在我的问题中,CppItemQQuickItem
带有一些 C++ 代码,在某些特定情况下,C++ 代码将implicitWidth
使用以下代码设置。
我知道我可以使用setImplicitWidth
,但我不确定它是否会对我的问题产生影响,而且无论如何,如果属性不是在 C++ 中声明而是在加载的 QML 文件中声明,你就不能这样做。
设置了属性值,但未删除 QML 绑定。所以上面的 C++ 代码不等同于 QML 代码:
使用 C++ 代码,任何更改parent.width
都将触发更新cppItem.implicitWidth
并再次设置 value cppItem.implicitWidth
。
如何从 C++ 中删除此绑定?