如何将 QML 中的引用错误解析为 c++ 对象
How to resolve ReferenceError in QML to c++ object
我在将c ++信号连接到QML窗口中时遇到问题,所有事件按钮都可以正常工作,但是当我尝试附加信号时,我从输出控制台收到"参考错误"。
#include <QApplication>
#include <QQuickWidget>
#include <QQmlContext>
#include <QQuickView>
#include "settings.h"
#include "settingswindow.h"
#include "mainwindow.h"
int main(int argc, char *argv[])
{
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QApplication app(argc, argv);
QQuickView wdg;
MainWindow mywnd;
wdg.engine()->rootContext()->setContextProperty("connection", &mywnd);
wdg.setSource(QUrl("qrc:/qml_vertical_7p/MainWindow.qml"));
wdg.show();
return app.exec();
}
这门课,我也尝试在我的两个信号上加Q_SIGNAL
#include <QObject>
#include <QQuickWidget>
#include <QQmlContext>
#include <QQmlEngine>
#include <QTimer>
#include <QTime>
#include <QDate>
#include <QDebug>
class MainWindow : public QObject
{
Q_OBJECT
private:
QString _windowPrefix;
const QString _mainWindowName = "MainWindow.qml";
QQuickWidget *_window;
QTimer _timer;
public:
explicit MainWindow(QObject *parent = nullptr);
void Show();
Q_INVOKABLE void secreetButtonPressed();
Q_INVOKABLE void secreetButtonReleased();
Q_INVOKABLE void onTimeChanged();
signals:
void timeChanged(QString formatted_time);
void dataChanged(QString formatted_data);
}
import QtQuick 2.4
import QtQuick.Controls 2.0
Item
{
id:wnd
visible: true
width: form.height
height: form.width
Page
{
rotation: 90
MainWindowForm
{
id: form
x: 0
y: -800
mouseArea.onPressed: {
connection.secreetButtonPressed()
}
mouseArea.onReleased: {
connection.secreetButtonReleased()
}
}
Connections
{
target: connection
onTimeChanged:{
}
}
}
}
我希望 c++ 中发出的信号会修改 QML 窗口,但结果是:
QML Connections: Cannot assign to non-existent property "onTimeChanged"
ReferenceError: connection is not defined
你的类 MainWindow 中有名称冲突:
Q_INVOKABLE void onTimeChanged();
signals:
void timeChanged(QString formatted_time);
所以,也许Qt无法理解你想使用什么功能。尝试重命名其中一个
我认为这是你的语法您必须尝试:
Connections{
target: connection
function onTimeChanged() {
//doing stuff
}
}
相关文章:
- #if 如何工作?我误解了 #if~#endif 的形式吗?
- 毕达哥拉斯三重嵌套循环误解
- 误解可变参数模板函数
- C++:误解内存地址和指针的复制值
- C++14 线程/条件变量误解
- CPP继承有些误解
- 我是否误解了此默认参数共享的范围
- 对Liinux上静态链接的误解
- 类大括号初始化被误解为 std::initializer_list 而不是复制构造
- 动态加载库和运行时误解的显式链接
- 编译器函数中的误解
- 我应该将分配器作为函数参数传递吗?(我对分配器的误解)
- MSVC 19.11 / Visual C 2017:尺寸1和size_t类型的初始化列表误解
- SPIMI算法误解
- C++一般的继承误解
- 填充和对齐 - 误解
- C++中对数组的误解
- 误解了 std::runtime_error 的 what() 函数
- 我误解了这个伪代码了吗
- 对 std::numeric_limits<double>::d igits10 的误解