草庐IT

qml-qtquick

全部标签

c++ - 在 QML 插件中注册一个 C++ 抽象类并从 QML 中引用它

我正在编写一个Qt应用程序。我已将我的应用程序分为QML前端和C++插件后端。在我的C++插件中,我有一个Session抽象类,我想将其公开给QML,我也有该类的一些实现。我希望我的QML前端只知道Session类,而不用担心它是哪种session的具体细节。我尝试了qmlRegister*的几种变体以使用QML注册我的session类型,但要么session需要具体(如qmlRegisterType的情况),要么它注册得很好,但我根本无法像propertySession中那样从QML引用session类型session甚至没有从QML实例化Session。有谁知道我应该如何处理这个问

c++ - 如何将 C++ 属性绑定(bind)到 QML 属性?

所以我知道如何将QML属性绑定(bind)到C++属性,所以当C++调用通知信号时,QML会更新View。当用户使用UI更改某些内容时,有什么方法可以使C++属性更新吗?例如,我有一个组合框,我希望在用户更改组合框的值时更新某些C++属性。编辑:我所说的C++属性是指QObject派生类中的Q_PROPERTY宏。 最佳答案 要从您未在QML中创建(或在其他上下文中创建)的对象绑定(bind)属性,您必须使用Binding.在你的情况下:Binding{target:yourCppObjectproperty:"cppPropert

与 Qt 4 (QtQuick 1.x) 和 Qt 5 (QtQuick 2.x) 兼容的 C++/QML 项目

当编写不使用QML且不依赖于新的Qt5功能的Qt应用程序时,我们可以同时使用Qt4和Qt5对其进行编译(除了少数源代码不兼容)。当我们想要使用Qt5功能但又想退回到等效但效率较低的Qt4解决方案时,我们可以简单地使用#if检查Qt版本,例如使用新的QStringLiteral但回到QString::fromUtf8使用Qt4编译时。我们怎样才能用QtQuick做同样的事情?请注意,可以使用QDeclarativeView与QtQuick1.x在Qt5中,但这不会使用Qt5中的新场景图。只有1.x在QDeclarativeView中得到支持并且只有2.x在QQuickView中得到支持,

c++ - 如何在带有 qmlscene(或 qmlviewer5)的 .qml 上使用 Qt Quick 2 扩展插件

我在QtCreator中使用项目模板“Libraries/QtQuick2ExtensionPlugin”创建了一个测试插件作为Qt5/QML共享库。我的开发环境是linux,Qt-5.0.0和QtCreator-2.6(详情见底部)。源文件(在要点上):https://gist.github.com/4467883源文件是默认生成的,没有任何更改。项目名称是“无标题”,uri是“com.mycompany.mycomponents”,对象类名称是“MyItem”。“/tmp/untitled”中的源文件作为SRCDIR。并将其构建为输出库文件作为"libuntitled.so"、"q

c++ - 将抽象类型作为 Q_PROPERTY 公开给 QML

我在BB10上使用Qt4.8。我为要实现的类定义了一个基接口(interface):classAbstractImageProcessor:publicQObject{public:AbstractImageProcessor(QObject*parent):QObject(parent){}virtualQImageprocess(constQByteArray&data)=0;virtual~AbstractImageProcessor(){}};我希望从QML中使用的这样一个实现如下所示:classWebImageProcessor:publicAbstractImageProc

c++ - QML ListView 使用 QList<QObject*> 作为模型

Qt的文档在这个问题上似乎有点短,但我正在尝试使用QList作为ListView的模型。问题是,我代表一个层次结构,每当单击一个项目时,模型就会与另一个模型交换,QML从C++回调中获取该模型。这是表示列表项的对象:classMyObject:publicQObject{Q_OBJECTQ_PROPERTY(QStringnameREADgetNameWRITEsetName)Q_PROPERTY(QStringsubtitleREADgetSubtitle)Q_PROPERTY(QListdescentREADgetChildrenNOTIFYchildrenUpdated)...}

c++ - QML 通过 id 锚定到 ApplicationWindow 不起作用

我像这样测试一个简单的QML(Qtsdk版本5.3.2)程序importQtQuick2.3importQtQuick.Controls1.2ApplicationWindow{visible:truewidth:640height:480title:qsTr("HelloWorld")id:appWinText{text:qsTr("HelloWorld")anchors.bottom:parent.bottom}}我希望文本位于应用程序窗口的底部,这行得通。但是,如果我将anchors.bottom:parent.bottom更改为anchors.bottom:appWin.bot

c++ - 在 QML Scene3D 中使用 Qt3D QEntity

我想向QMLScene3D添加一个C++QEntity,如下所示://C++classMapEntity:publicQt3DCore::QEntity{public:MapEntity(Qt3DCore::QEntity*parent):Qt3DCore::QEntity(parent){...}}//QMLScene3D{MapEntity{id:map...}}这可能吗?如果是,该怎么做?或者也许可以创建C++场景(例如Qt3DExtras::Qt3DWindow)并在QML中使用? 最佳答案 是的,可以在C++代码中定义QE

c++ - 从 QTest 模拟点击的 QML 元素

我正在使用QTest,并希望在我的UI中的一个QML元素的测试中模拟鼠标单击。换句话说,我想从C++触发我的QML代码中的onClicked信号处理程序?这是我的QML的样子:importQtQuick2.0Rectangle{objectName:"MessageRectangle"width:360height:360Text{objectName:"MessageText"text:qsTr("HelloWorld")anchors.centerIn:parent}Rectangle{id:simplebuttonobjectName:"ChangeTextButton"colo

c++ - 如何将 QList 从 QML 传递到 C++/Qt?

我正在尝试将整数的QList从QML传递到C++代码,但不知何故我的方法不起作用。使用以下方法出现以下错误:leftof'->setParentItem'mustpointtoclass/struct/union/generictypetypeis'int*'非常感谢任何解决问题的意见下面是我的代码片段头文件Q_PROPERTY(QDeclarativeListPropertyenableKeyREADenableKey)QDeclarativeListPropertyenableKey();//functiondeclarationQListm_enableKeys;cpp文件QDe