2013-09-14 1 views
0

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

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"; 
} 

И Main

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. Что происходит с этой переменной, когда функция выходит??

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

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


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

 Смежные вопросы

  • Нет связанных вопросов^_^