Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: t.key от Апрель 03, 2010, 17:04



Название: QApplication::reg Class выкидывает ошибку
Отправлено: t.key от Апрель 03, 2010, 17:04
Использую 2d массив объектов который наследуется от QPolygon.
Когда массив маленький, все хорошо. Когда я его увеличиваю (примерно 50 х 140), на консоль выходит ошибка:
"QApplication::regClass: Registering window class failed. (?????? ??? ??????????)"
и продолжает работать. Когда я сворачиваю окно, прога малость поработает и выкидывает.
Если есть кто сталкивавшийся с этой проблемой, или знающий причину помогите плз.
Есть конечно альтернатива, придумать другую логику, переписать, и надеется что этого больше не будет. Но эта идея как то не по мне.  :o


Название: Re: QApplication::reg Class выкидывает ошибку
Отправлено: SABROG от Апрель 03, 2010, 17:10
Выкладывай полностью исходники, посмотрим.


Название: Re: QApplication::reg Class выкидывает ошибку
Отправлено: t.key от Апрель 03, 2010, 19:06
Полностью исходники выложить будет сложно. Там у меня 10 source  и 9 header файлов.
Логика в общем такая:
у меня MainPanel наследует QWidget, отлавливает mouseMoveEvent'ы и в конструкторе создает QThread который каждые 30 милисек сигналами вызывает repaint(), у MainPanel есть еще Panel который тоже наследует QWidget и отлавливает paintEvent который repaint'ится каждые 30 милисек. У MainPanel'а есть объект класса MapInfo  у которого 2d массив объектов класса Terrain наследующего QPolygon. Ошибка появляется сразу после создания MapInfo но до создания Panel.
Здесь сампл кода:
MainPanel:
Код:
...

MainPanel::MainPanel(QWidget *parent): QWidget(parent){
...

MapInfo *mapInfo = new MapInfo(MapInfo::New, this);
std::cout << "between this two\n";
playPanel = new PlayPanel(mapInfo, this);
layout->addWidget(playPanel);

...
}
...

MapInfo:
Код:
...

MapInfo::MapInfo(GameType gameType, MainPanel *parent): QObject(parent){
if (gameType == New){
QFile mapFile("maps/map.mp");
if (!mapFile.open(QIODevice::ReadOnly))

...

PlayPanel:

Код:
...

PlayPanel::PlayPanel(MapInfo *mi, QWidget *parent): QWidget(parent){
std::cout << "what is wrong?\n";
setMouseTracking(true);
posX = 0; posY = 0;
mapInfo = mi;
}

...

еще рисунок ошибки