У меня возникли проблемы с использованием QSplashScreen в новом проекте Qt Quick 2. Вот проект «main.cpp»:QSplashScreen on Qt Quick 2
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
QPixmap pix("./test80.png");
QSplashScreen splash(pix);
splash.show();
QTest::qSleep(5000);
splash.hide();
QtQuick2ApplicationViewer viewer;
viewer.setMainQmlFile(QStringLiteral("qml/teste/main.qml"));
viewer.showExpanded();
return app.exec();
}
Этот код скомпилирован. Когда я запускаю его, вывод приложения показывает следующее сообщение: QWidget: Cannot create a QWidget without QApplication
. Таким образом, очевидно, что QGuiApplication не наследуется от QApplication, поэтому я в тупике.
Редактировать: изменение QGuiApplication к QApplication, казалось, работали, но я боюсь, что QApplication будет не хватать что-то необходимое на Qt Quick 2.
Итак, нет способа использовать QSplashScreen в проекте Qt Quick 2? –
Да: просто используйте QApplication вместо QGuiApplication. Конечно, вам нужно связать с QtWidgets ('QT + = widgets' в .pro-файле). Другой подход (если вы не хотите, чтобы виджеты зависели только для всплывающего экрана) делает splashscreen в QML. Я уверен, что либо с QtQuick Controls (входит в Qt 5.1), либо просто с * другим * QQuickView (с установленными правильными флажками окна) вы можете взломать окно, похожее на QSplashScreen. – peppe
Итак, я изменил QGuiApplication на QApplication, и он сработал. Но разве это не испортило бы что-то? Я имею в виду, что QGuiApplication не существует ни для чего, не так ли? –