【问题标题】:QML Connections handle event from service results in segfaultQML Connections 处理来自服务结果的事件导致段错误
【发布时间】:2017-12-14 12:59:22
【问题描述】:

我很难理解 qt 的非标准 C++ 世界。我有一个可以发出“登录”信号的类,我想从 QML 收听,这只是段错误。

class Service : public QObject
Q_OBJECT
{
public:
    Service()
    {
        // get the context, snipped for brevity
        rootContext->setContextProperty("service", this);
    }
public signals:
    void login(bool succcess);
public slots:
     void method();
};

我可以成功地从 QML 调用“service.method”,但是如果我添加一个连接部分来监听登录事件,每当显示该组件时我都会收到一个段错误。

Page {
    Component {
        Column {
             ...
            Connections {
                target: service
                onLogin: {
                    console.login("TEST");
                }
            }
        }
    }
}

我尝试将“连接”部分移出列,但这会导致运行时错误和白页,因为它无法解析 QML。我在这里错过了什么?

如果有任何相关性,我正在使用 QT Creator 4.2.1。

【问题讨论】:

  • 服务是否可能存在于另一个线程中?
  • 没有。整个应用程序都是单线程的。
  • 什么是console.login?你的意思是console.log()?而且我不认为将Connections 放在Component 中是一个好主意。

标签: qt qml


【解决方案1】:

发现问题。显然,您不能拥有同名的插槽和信号 - 即使它们具有截然不同的功能签名。它不会给出编译错误,它只是崩溃。

更改信号名称后,它神奇地开始工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-28
    • 1970-01-01
    • 1970-01-01
    • 2020-03-06
    • 2015-06-09
    • 1970-01-01
    相关资源
    最近更新 更多