2013-07-12 1 views
2

У меня возникли проблемы с использованием 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.

ответ

5

На самом деле это наоборот: QApplication унаследован от QGuiApplication. И вам нужно, чтобы первый использовал виджеты. :-)

+0

Итак, нет способа использовать QSplashScreen в проекте Qt Quick 2? –

+0

Да: просто используйте QApplication вместо QGuiApplication. Конечно, вам нужно связать с QtWidgets ('QT + = widgets' в .pro-файле). Другой подход (если вы не хотите, чтобы виджеты зависели только для всплывающего экрана) делает splashscreen в QML. Я уверен, что либо с QtQuick Controls (входит в Qt 5.1), либо просто с * другим * QQuickView (с установленными правильными флажками окна) вы можете взломать окно, похожее на QSplashScreen. – peppe

+0

Итак, я изменил QGuiApplication на QApplication, и он сработал. Но разве это не испортило бы что-то? Я имею в виду, что QGuiApplication не существует ни для чего, не так ли? –