在Qt / QML中显示错误消息

时间:2014-09-22 10:38:13

标签: c++ qt qml qt-quick

我有一个具有某个功能的类,在某些点上可能会或可能不会失败。它应该产生一个错误消息,可以向用户显示并在失败时返回false。 这就是我所拥有的:

class MyManager : public QObject
{
    Q_OBJECT

public:

    MyManager(QObject* parent);

    bool createSomething() {
        if(foo == false) {
            qDebug() << "foo can't be false here";
            //Error message should be shown to user
            return false;
        }
        //Do stuff
    }

C ++方面应该不了解QML中的实现。一种可能的方法是获得error(const QString& msg)信号,如下所示:

bool createSomething() {
    if(foo == false) {
        qDebug() << "foo can't be false here"
        emit error("Foo is false");
        return false;
    }
    //Do stuff
}

并且必须像这样显示QML:

Connection {
    target: manager
    onError: errorMessageText.text = msg
}

一个也可以更具体,并有一个名为creationError(const QString& msg)

的信号

这整个实现感觉不对,我确信在架构上有更好的方法。我对这方面的一些见解和想法很满意!

1 个答案:

答案 0 :(得分:0)

我认为你的方式并不是那么糟糕。

无论如何,你也可以通过例如这样做。使用QObject::setProperty()直接从C ++设置属性,或者通过QMetaObject::invokeMethod调用为您更改它的QML方法,但您必须存储(或每次查找)要操作的QML对象。