Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: RandRay от Декабрь 10, 2009, 16:53



Название: QWidget: Must construct QApplication before QPaintDevice
Отправлено: RandRay от Декабрь 10, 2009, 16:53
Или почему указатель qApp может быть невалиден?
В исходниках нашел qApp (указатель на instance QCoreApplication) - при выполнении
Код:
    
 if (!qApp) {
        qFatal("QWidget: Must construct a QApplication before a QPaintDevice");
        return;
    }
вылезает ошибка.

Создал приложение, все нормально. Написал для него диалог поиска - вот такая ветчина вылетела. Главное теперь не убрать её - убирал даже H-ники, посвященные диалогу, и всё равно вылетает! =(
я пользовался поиском, искал на нескольких сайтах - везде пишут, что у меня Виджет до Приложения объявлен? в принципе это и из сообщения ясно  - как он может быть объявлен если код такой
Код:
#include "stdafx.h"
#include <QtCore/QCoreApplication>
#include <QtGui/QMainWindow>
#include <QtGui/QApplication>
#include "code2.h"


int main(int argc, char *argv[])
{
   
QApplication APPLIC(argc,argv);

code2 w;
       
           w.show();
QTextCodec *rusCodec = QTextCodec::codecForName("windows1251");
QTextCodec::setCodecForTr(rusCodec);

       APPLIC.connect(&APPLIC, SIGNAL(lastWindowClosed()), &APPLIC, SLOT(quit()));
        return APPLIC.exec();
}


В файле ui_code.h  все виджеты объявлены указателями.
В code2.h нет ничего, наследующего QPaintDevice.

Как заставить это работать?
Благодарен.


Название: Re: QWidget: Must construct QApplication before QPaintDevice
Отправлено: Rcus от Декабрь 10, 2009, 16:57
Данных для ответа мало, но можно предположить наличие жизни до вызова main, то есть инициализацию статических объектов.
Вызов qFatal примечателен тем что вызывает abort(), это можно перехватить отладчиком и посмотреть след стека вызовов для окончательной диагностики


Название: Re: QWidget: Must construct QApplication before QPaintDevice
Отправлено: RandRay от Декабрь 10, 2009, 17:00
Сейчас поищу статические объекты и след стека посмотрю. Спасибо за совет!


Название: Re: QWidget: Must construct QApplication before QPaintDevice
Отправлено: RandRay от Декабрь 10, 2009, 20:07
что нужно выложить для более глубокого анализа проблемы форумчанами?


Название: Re: QWidget: Must construct QApplication before QPaintDevice
Отправлено: Dendy от Декабрь 11, 2009, 04:45
Весь код давай.


Название: Re: QWidget: Must construct QApplication before QPaintDevice
Отправлено: RandRay от Декабрь 11, 2009, 22:36
всё. Проблема решена =) нашел это объявление - далеко однако лежало. Всем спасибо все свободны! ;)