Russian Qt Forum

Qt => Общие вопросы => Тема начата: Vexator от Август 20, 2009, 04:35



Название: Затуп с массивом кнопок
Отправлено: Vexator от Август 20, 2009, 04:35
Доброго времени суток всем!

Сделал такую штуку, объявил массив кнопок

Код
C++ (Qt)
QMapButton *map[5][5];
 
где QMapPutton это наследник QPushButton'а, в котором добавлено пару новых переменных с интерфейсом для их использования.

в конструкторе задал ее как:
Код
C++ (Qt)
for (int i=0;i<5;i++)
{
      for(int j=0;j<5;j++)
      {
      map[i][j] = new QMapButton(this,i,j); //i,j - используються внутри кнопки
      map[i][j]->setPixmap(...);
       //и .т.д.
      }
}
 

и все вроде ровно, и кнопки рисуються и т.д. и т.п.

но! после события (от сети), когда необходимо считать значение из одной из переменных в нужной кнопке, происходит критический вылет (в данном случае в клетке 4,4), ставил 6х6, тогда вылетает 3,1...

прогнал отладчиком и что заметил, что да, при создании класса все ровно...
но после выхода из конструктора, указатель сбивается... т.е. он указывает туда же что и ранее, но программа во время работы пишет в эту область памяти, будто она и не зарезервирована за классом... что и приводит к тому, что по адресу ссылки лежит какой то мусор... отчего это происходит??? и почему только на 1й ссылке?... такое чуство что я не правильно создал массив кнопок (ранее такого не делал).. и по какой то причине new не блокирует область котрую я выделяю кнопкам...
может кто сказать в чем может быть косяк и как сделать это дело правильно?

// иногда сам указатель уже начинает указывать в пустоту...


Название: Re: Затуп с массивом кнопок
Отправлено: Vexator от Август 20, 2009, 06:31
в чем причниа столь странного поведения не осознал... отчего то обратил внимание, что в объекте myClass в main.cpp , отчего то реквезиты совсем не моего класса myClass (это видно только при отладке) , а еще старого его варианта, где очень многих реквизитов или не было, или они были другого "размера"... после полной пересборки проекта все поехало нормально.. а чем может быть вызвано подобное поведение MSVS ?


Название: Re: Затуп с массивом кнопок
Отправлено: Авварон от Август 20, 2009, 07:55
видимо тем, что модуль не пересобрался... такое иногда бывает - меняешь сигнатуру с func(T&) на func(const T&) - не собирается с ошибкой линковки (пытается найти func(T&)). Правда это под migw


Название: Re: Затуп с массивом кнопок
Отправлено: ecspertiza от Август 20, 2009, 08:03
Я для создания подобного рода массивов использую QList, я думаю может в этом дело.


Название: Re: Затуп с массивом кнопок
Отправлено: Vexator от Август 20, 2009, 08:31
Я для создания подобного рода массивов использую QList, я думаю может в этом дело.
кстати здравая идея, чет я сразу не догадался так делать..