QMLApplicationViewer только несколько экземпляров сначала показывает окно

У меня проблема с QTQuick1.1 (QT4.8). У меня есть основной класс, где я экземпляр QMLApplicationViewer, и это показывает окно. Я также вызываю класс, который должен показать другой с другим файлом QML, но он не отображается. Однако сообщения отладки отображаются.
Вот мой код:

AnotherWindow::AnotherWindow(QString notImportant)
{
}
void AnotherWindow::create(){
QmlApplicationViewer view;
qDebug()<<"dbug: CWCReate";
view.addImportPath(QLatin1String("modules"));
view.setOrientation(QmlApplicationViewer::ScreenOrientationAuto);
view.setMainQmlFile(QString("instanceOfAnotherWindow.qml"));
view.showExpanded();
qDebug()<<"dbug: show";
}

И в основном

QmlApplicationViewer view;
view.addImportPath(QLatin1String("modules"));
view.setOrientation(QmlApplicationViewer::ScreenOrientationAuto);
view.setMainQmlFile(QLatin1String("/main.qml"));
view.setFixedSize(360,600);
AnotherWindow *c = new AnotherWindow("notImportantHere");
c->create();
view.showExpanded();
return app->exec();
}

Заранее спасибо.

0

Решение

Эта строка является проблемой:

QmlApplicationViewer view;

Просто подумайте на секунду, что вы здесь делаете?

Q. Создавать объект, который вы хотите в течение всей жизни вашей программы (надеюсь), внутри функции?

Q. Сколько времени жизни локальной переменной!?

Q. Что происходит с этой переменной при выходе из функции?

Ой, но в основном это работает нормально, что тоже является функцией?

Q. Но тогда каково время жизни основной функции?


Решение : Сделайте этот объект таким, чтобы он был доступен на протяжении всей жизни вашей программы. Как насчет указателя и динамического распределения памяти? Как насчет того, чтобы сделать этот указатель членом данных вашего класса? И main не «выходит» до окончания вашей программы, не так ли?

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]