c++ - 在 Qt/QML 中显示错误消息

标签 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)

的信号

整个实现感觉不对,我相信有更好的架构方式来实现。如果对此有一些见解和想法,我会很高兴!

最佳答案

我觉得你的方法还不错。

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

关于c++ - 在 Qt/QML 中显示错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25972075/

相关文章:

c++ - 如何调整椭圆的大小,使其始终触及左右边界?

c++ - 获取虚拟机中物理处理器的数量

c++ - 当 C++ 尝试访问 vector 的元素(在范围内)时,Qt Quick Windows 应用程序崩溃

c++ - 从 plasmoid qml 调用 c++ 槽

c++ - CoCreateInstanceEx 在 Win2003 上返回带有无效凭据的 S_OK

c++ - 为什么链接器不保留封装?

c++ - 尝试从资源加载 qml 时出错

c++ - cmake 和 Qt 样板,无法初始化类型为 'QMainWindow *' 的参数错误

qt - 在 Qt Creator 上构建时,jom 挂起 - MSVC 2008 Express

java - 在单独的 Android 线程上调用时,emit 不起作用