Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 让QSplashScreen在我的应用程序中工作_Qt_Qml_Splash Screen_Qmainwindow_Qsplashscreen - Fatal编程技术网

Qt 让QSplashScreen在我的应用程序中工作

Qt 让QSplashScreen在我的应用程序中工作,qt,qml,splash-screen,qmainwindow,qsplashscreen,Qt,Qml,Splash Screen,Qmainwindow,Qsplashscreen,文档中有一个示例提供了以下代码,看起来非常简单: int main(int argc, char *argv[]) { QApplication app(argc, argv); QPixmap pixmap(":/splash.png"); QSplashScreen splash(pixmap); splash.show(); app.processEvents(); ... QMainWindow window; window

文档中有一个示例提供了以下代码,看起来非常简单:

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QPixmap pixmap(":/splash.png");
    QSplashScreen splash(pixmap);
    splash.show();
    app.processEvents();
    ...
    QMainWindow window;
    window.show();
    splash.finish(&window);
    return app.exec();
}
现在的问题是,我正在使用QApplication,创建一个引擎并像下面这样打开我的QML文件:

engine->load(QUrl(QLatin1String("qrc:/qml/main.qml")));
从文档中,我无法真正理解如何像示例中那样使用QMainWindow,而不将文件的URL作为参数传递(没有这样的函数可用)。我必须编写C++类从QMeNeLink或类似的东西派生出来吗?还是我遗漏了另一个要点?
此外,我还很高兴看到关于让QSplashScreen正常工作的任何其他建议。

我认为您谈论的QSplashScreen来自QWidget库,而不是QtQuick/QML。请参阅此处:了解QML中的解决方案。非常感谢您提供的有用提示!它现在很有效,看起来很专业。唯一让我有点不舒服的是,这个QML风格的启动屏幕只在QML应用程序完全构建完成后才加载,而我认为小部件方法nicley绕过了单击“运行”并加载所有QML文件的时间。我是对的吗?有人知道是否有QML方法来模拟这种行为吗?您可以使用基于QtQuick的splashscreen以及将主UI加载到不同的引擎中。例如,您可以对splashscreen内容使用
QQuickView
。如果您有一个
QApplication
实例,因此可以访问基于小部件的
qsplashsscreen
您仍然可以使用它,您只需要从主内容的QML触发其关闭,或者例如通过将
qqqmlapplicationengine
objectCreated()
信号连接到splashscreen的“关闭”()斯洛蒂认为你所说的QSplashScreen来自QWidget库,而不是QtQuick/QML。请参阅此处:了解QML中的解决方案。非常感谢您提供的有用提示!它现在很有效,看起来很专业。唯一让我有点不舒服的是,这个QML风格的启动屏幕只在QML应用程序完全构建完成后才加载,而我认为小部件方法nicley绕过了单击“运行”并加载所有QML文件的时间。我是对的吗?有人知道是否有QML方法来模拟这种行为吗?您可以使用基于QtQuick的splashscreen以及将主UI加载到不同的引擎中。例如,您可以对splashscreen内容使用
QQuickView
。如果您有一个
QApplication
实例,因此可以访问基于小部件的
qsplashsscreen
,您仍然可以使用它,您只需要从主内容的QML触发其关闭,或者例如通过将
qqqmlapplicationengine
objectCreated()
信号连接到splashscreen的“close()”插槽