qml: ReferenceError: serial is not defined

qml编译警告:qrc:/Form02.qml:67: ReferenceError: serial is not defined

serial是我自定义的一个串口线程,在编译时报警告说serial未定义,但又能正常访问获取数据,使用代码示例如下:

示例代码:

cpp 复制代码
{
    //1
    ui->quickWidget_2->setSource(QUrl("qrc:/Form02.qml"));
    //2
    serial = new SerialPort;
    ui->quickWidget_2->rootContext()->setContextProperty("serial", serial);
    ui->quickWidget_2->setResizeMode(QQuickWidget::SizeRootObjectToView);
    //3 cpp 与 qml信号连接
    QObject* obj = ui->quickWidget_2->rootObject();
    if(QMetaObject::invokeMethod(obj, "slotOpenSerial", Qt::DirectConnection, Q_ARG(bool, true), Q_ARG(QString, "")))
        connect(serial, SIGNAL(openMsg(bool,QString)), obj, SIGNAL(slotOpenSerial(bool,QString)));
}

解决办法:先设置串口对象在根节点中的name,再将qml添加到quickWidget

cpp 复制代码
{
    //1
    serial = new SerialPort;
    ui->quickWidget_2->rootContext()->setContextProperty("serial", serial);
    ui->quickWidget_2->setResizeMode(QQuickWidget::SizeRootObjectToView);
    //2
    ui->quickWidget_2->setSource(QUrl("qrc:/Form02.qml"));
    //3 cpp 与 qml信号连接
    QObject* obj = ui->quickWidget_2->rootObject();
    if(QMetaObject::invokeMethod(obj, "slotOpenSerial", Qt::DirectConnection, Q_ARG(bool, true), Q_ARG(QString, "")))
        connect(serial, SIGNAL(openMsg(bool,QString)), obj, SIGNAL(slotOpenSerial(bool,QString)));
}
相关推荐
无小道3 小时前
Qt-qrc机制简单介绍
开发语言·qt
CodeKwang4 小时前
Qt实战:简易Excel表格 | 附完整源码
qt·excel·qtabwidget·qt控件
C++ 老炮儿的技术栈7 小时前
Qt 编写 TcpClient 程序 详细步骤
c语言·开发语言·数据库·c++·qt·算法
打工哪有不疯的8 小时前
使用 MSYS2 为 Qt (MinGW 32/64位) 完美配置 OpenSSL
c++·qt
LYOBOYI12310 小时前
qtcpSocket详解
c++·qt
无小道11 小时前
Qt——网络编程
开发语言·qt
云中飞鸿12 小时前
VS编写QT程序,如何向linux中移植?
linux·开发语言·qt
草莓熊Lotso12 小时前
Qt 主窗口核心组件实战:菜单栏、工具栏、状态栏、浮动窗口全攻略
运维·开发语言·人工智能·python·qt·ui
云中飞鸿1 天前
QTCreator快捷键
qt
十五年专注C++开发1 天前
QStyleItemDelegate:自定义列表控件类神器
qt·model·view·delegate