草庐IT

c++ - 为 console.log 设置一个 QML 类别

我是Qt/QML主题的新手,我正在尝试在我的C++业务逻辑中安装一个日志记录处理程序。以下代码片段安装一个处理程序并设置一个特殊类别:intmain(intargc,char*argv[]){qInstallMessageHandler(myMessageOutput);QLoggingCategorymainEx("main.ex");qCDebug(mainEx)结果是从Qt后端调用以下已安装的消息处理程序:voidmyMessageOutput(QtMsgTypetype,constQMessageLogContext&context,constQString&msg){...}

c++ - 跨线程从 QML 调用 QObject 函数

我正在尝试确定如何从QML调用QObject槽或Q_INVOKABLE方法来为存在于另一个线程中的QObject工作,以及这样做是否安全。假设有一个MainThread和ThreadA。QObjectA存在于ThreadA中。QML引擎/GUI/一切都在MainThread中。我使用将QObjectA暴露给QML引擎declarativeView->setContextProperty("someObj",ObjectA)现在在QML文件中,我调用someObj.someMethod();其中someMethod是一个插槽或者是Q_INVOKABLE。我想知道哪个线程实际执行该函数。如

c++ - 无法从 QQmlPropertyMap 的子类中的 QML 调用插槽或 Q_INVOKABLE

我正在尝试测试QQmlPropertyMap类。如果我可以将它子类化,它似乎可以很好地满足我的需求。文档here甚至给出了一些关于如何对其进行子类化的基本说明。所述文档还指出此类派生自QObject。为了它的值(value),我在带有QtQuick2.0的Qt5.0.0上使用QtCreator2.6.1。我的main.qml:importQtQuick2.0Rectangle{width:360height:360Text{text:owner.fieldanchors.centerIn:parent}MouseArea{anchors.fill:parentonClicked:{ow

c++ - Qt:UI 与 c++ 对比 xml 对比 qml

今天开始学习qt,有一个疑问。当我创建一个项目时,它带有*.ui文件,这是一种XML文件,但在书中,我只使用纯c++(类)创建UI。我听说还有另一种使用qml创建UI的方法。那么,每种UI创建方式的优缺点是什么?提前致谢编辑:我正在使用QT5.1.0 最佳答案 不要忘记,您还可以嵌入QtWebkitView并直接使用HTML作为用户界面控件。可以提供每个子框架细节的冗长答案,但QT项目人员已经用他们自己的图表回答了这个问题:http://qt-project.org/doc/qt-5.1/qtdoc/topics-ui.html#c

c++ - QtQuick ChartView QML 对象段错误在加载期间导致 QML 引擎段错误

我有一个QML应用程序(通过属性、Q_INVOKABLE等)链接到C++代码。我可以使用qmlscene在没有大部分C++框架的情况下启动QML应用程序,并且没有明显的问题(除了丢失的数据和应该从C++端提供的功能)。但是,当我构建和部署代码时,我在QQmlApplicationEngine::load()调用期间在Qt框架内遇到段错误。我创建了一个简化的“虚拟”应用程序,它似乎会触发完全相同的问题。C++应用程序:#include#include#include"SigCatcher.hpp"//Proprietarycodeintmain(intargc,char*argv[]){

QML- JavaScript 表达式在 QML 中使用

Q理论使用总结一、概述二、属性绑定中的JavaScript三、JavaScript在signalhandler中的应用四、独立函数中的JavaScript1.QML里面JavaScript的自定义方法2.定义在JavaScript文件中的函数3.将信号连接到JavaScript函数五、在应用程序启动代码中使用JavaScript一、概述QML提供的JavaScript的运行宿主环境可以运行有效的标准JavaScript功能,如条件运算符、数组、变量设置和循环。除了标准的JavaScript属性之外,QMLGlobal对象还包含一些辅助方法,用于简化构建ui以及与QML环境交互的过程。QML提供

c++ - Q_INVOKABLE 方法返回自定义 C++ 类型

我有一个C++方法Q_INVOKABLE。我可以从QML调用此方法,它在返回基本类型(如QString)时有效。但我不能使用自定义类型。我应该怎么做?我应该返回一个QVariant吗?理想情况下,如果可能的话,我想返回一个指向我的自定义类型的指针。编辑我这样做:qmlRegisterType("Mine",1,0,"MyType");qmlEngine->rootContext()->setContextProperty("testObj",newMyType());我可以使用testObj全局对象或创建MyTypeQML组件。但是我不能在某些javascript代码中将它用作Q_IN

c++ - Qt/QML qmlRegisterType 与 setContextProperty(区别)

在Qt/QML应用程序中(此代码通常驻留在QtCreator项目的main.cpp中),以下几种方式将C++类暴露给QML有什么区别:qmlRegisterType("com.example",1,0,"UePeopleModel");和engine.rootContext()->setContextProperty("uePeopleModel",uePeopleModel);? 最佳答案 qmlRegisterType:“有时QObject派生类可能需要在QML类型系统中注册,但不需要作为可实例化的类型。”如果你想在一个或多个具

c++ - 如何 Qt - Qml 调试和/或分析?

在应用程序中编译需要哪些软件Qt/QML片段才能调试/分析QML?我当前的应用程序是使用cmake构建的,并在嵌入式设备上运行。此外,我开始使用Qt4.8.3(直到现在是4.7.0)。我想使用这些奇特/酷的功能(对于嵌入式开发人员):http://doc.qt.digia.com/qtcreator/creator-qml-performance-monitor.html我搜索了qt-project寻求帮助,但我不清楚当您想要使用自定义构建环境调试/分析远程应用程序时需要执行哪些步骤。所以,我想知道是否需要执行以下任何步骤,在肯定的情况下,实际上需要什么代码。Qt库./configur

c++ - Qt/Qml 和方法重载

在从Qml中调用重载的C++方法并试图了解其背后的原因时,刚刚遇到Qt框架的奇怪行为。假设我有一个QList-like具有以下方法的类:...Q_SLOTvoidappend(constQVariant&item);Q_SLOTvoidappend(constQVariantList&items);Q_SLOTvoidinsert(intindex,constQVariant&item);Q_SLOTvoidinsert(intindex,constQVariantList&items);...Qml:onclicked:{varitemCount=myListObject.size(