Russian Qt Forum

Qt => Общие вопросы => Тема начата: evilguard от Февраль 12, 2007, 21:30



Название: QT 4.2.2 Глюки программы при вызове connect
Отправлено: evilguard от Февраль 12, 2007, 21:30
http://qtprojects.narod.ru/test.rar (50кб)
Выложил тестовую пустую программку, потому что описать ошибки здесь трудно, пожалуйста помогите. В ней два класса, потомки QObject, абсолютно одинаковые, различаются только именем класса, в них объявлен одноименный сигнал, sos(int), в прочем там все есть.
Конструктор для QMainWindow:
Код:

test::test(QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags)
{
ui.setupUi(this);

progressBar = new QProgressBar();
statusBar()->addWidget(progressBar);
progressBar->setMinimum(0);
progressBar->setMaximum(2000);
MGrid *grid;
MPoints *points;
connect(grid, SIGNAL(sos(int)), progressBar, SLOT(setValue(int)));
}

Вышеописанные классы - MGrid И MPoints. Абсолютно одинаковые. При задании в качестве параметра в функции connect объекта points - вылезает одна ошибка на стадии выполнении программы - "Unhandled exception at 0x0012ffe0 ...", а при задании объекта grid - другая: ""A buffer overrun has occured in test.exe which has corrupted the program's internal state". Но классы ведь одинаковые??! Ошибку не вижу в упор, вот листинги классов MGrid и MPoints:
Код:

// -----------------------MPoints----------------------
#include <QObject>

class MPoints : public QObject
{
Q_OBJECT
public:
MPoints();
~MPoints();
void func2();
signals:
void sos(int value);
};


Код:

//--------------------------MGrid---------------------------
#include <QObject>

class MGrid : public QObject
{
Q_OBJECT
public:
MGrid();
~MGrid();
void func2();
signals:
void sos(int value);
};


Впрочем все это есть в проекте, пожалуйста помогите, скачацте - попробуйте откомпилировать, проект - MSVC2005.
Заранее очень благодарен!!!


Название: QT 4.2.2 Глюки программы при вызове connect
Отправлено: Mixolap от Февраль 12, 2007, 23:47
Проинициализируй указатели:
   MGrid *grid = new MGrid;
   MPoints *points = new MPoints;
а потом уже  connect все остальное и про delete затем не забуть.


Название: QT 4.2.2 Глюки программы при вызове connect
Отправлено: evilguard от Февраль 13, 2007, 00:13
ааааааааа, вот балбес! Забыл, спасибо!
Дело в том что у меня в программе в этом классе идет долгий расчет, я хотел чтобы он посылал сигнал в полосу прогресса, чтобы было видно ход расчета. А расчет вызывался сразу при вызове конструктора, поэтому и connect приходилось объявлять до вызова конструктора, чтобы ход процесса отобажался. Придется выносить расчет в отдельную функцию ы выполнять ее после вызова connect.
Спасибо!