0

我在我的 QML 文件中声明了一张工作表,其 ID 为“splashscreen”

当我的应用程序执行计算密集型任务时,我会发出 working() 信号。

我将此代码附加到我的 QML 文件的主要元素中:

onCreationCompleted: {
    _encryptedattachment.finished.connect(splashscreen.close);
    _encryptedattachment.working.connect(splashscreen.open);
    console.log("connected");
}

如果我通过调用需要解密的文件打开应用程序,

    _encryptedattachment.working.connect(splashscreen.open);

不打开启动画面,即使事件被触发(我在调试器中检查了代码

emit working()

被执行。

编辑:

我将 onCreated 代码更改为:

onCreationCompleted: {
    splashscreen.open();
    _encryptedattachment.working.connect(showSplash);
    _encryptedattachment.finished.connect(hideSplash);
    console.log("connected");
}
function showSplash() {
    console.log("open splashscreen");
    splashscreen.open();
}
function hideSplash() {
    console.log("close splashscreen");
    splashscreen.close();
}

并且这两个日志都出现在控制台中。

4

1 回答 1

1

调用后,QSplashScreen::show()您必须调用QApplication::processEvents(),以便 eventloop 将其绘制在屏幕上。记得QApplication::processEvents()在每次启动画面更新后打电话。

于 2013-07-15T13:02:51.390 回答