Сразу скажу, что если кого я достал (а тут есть один товарсич которого я достал) можете не отвечать :))
Вообщем такая ситуация, есть класс, в коротом создаётся два массива QWidget'ов, оба они в какой то мере динамические, так вот, когда я туда пытаюсь добавить 4-ый элемент то прога валиться. Выяснилось это так, вообще эти виджеты должны добавляться динамически но пока прога ещё не на такой стадии готовности а пока надо проверить работу класса, добавляю три элемента, всё нормально, но как только пытаюся добавить четвёртый, так всё падает, т.е. когда пытаюсь запусить прогу оно валиться в сегфолт.
вызовы:
/*******************************************************************/
...
tmp = new QPixmap(*playlistw->space->backgroundPixmap());
playlisttabs = new kmmsTabs(playlistw->space->x(), playlistw->space->y(), playlistw->space->width(),
playlistw->space->height(), tmp, playlistw);
delete tmp;
QWidget *t = new QWidget;
t->resize(playlisttabs->space_width(), playlisttabs->space_height());
QWidget *t1 = new QWidget;
t1->resize(playlisttabs->space_width(), playlisttabs->space_height());
playlisttabs->addTab(t);
playlisttabs->addTab(t);
playlisttabs->addTab(t1);
// playlisttabs->addTab(t1); //Если его добавить то прога падает
/******************************************************************/
Обьявление:
QWidget **header;
QWidget **space;
QWidget **tmp;
метод класса:
/******************************************************************/
void tabs::addTab(QWidget *tab)
{
if(num_tabs == 0)
{
header = new QWidget*[1];
header[0] = new QWidget(this);
header[0]->resize(headerXSize,headerYSize);
space = new QWidget*[1];
space[0] = new QWidget(tab);
space[0]->reparent(this,QPoint(0,0)); // здесь не падает
space[0]->move(0, headerYSize + 10);
space[0]->resize(tab->width(), tab->height());
num_tabs++;
}
else
{
int n = num_tabs;
tmp = new QWidget *[n];
tmp = header;
delete header;
header = new QWidget*[n+1];
header = tmp;
header[n] = new QWidget(this);
header[n]->resize(headerXSize,headerYSize);
header[n]->move(n*(headerXSize+10),0);
delete tmp;
tmp = new QWidget *[n];
tmp = space;
delete space;
space = new QWidget*[n+1];
space = tmp;
delete tmp;
space[n] = new QWidget(tab);
// space[n]->reparent(this,QPoint(0,0)); // от этого тоже падает
space[n]->resize(tab->width(), tab->height());
num_tabs++;
}
}
/******************************************************************/
И ещё вопрос, не получается сменить родителя для элемента массива
space[n]->reparent(this,QPoint(0,0));
т.е. после вызова этой функции, прога так же падает. Без неё всё пашет, но она необходима, иначе никак. Так же хочу заметить что пока элемент в массиве только один, такой вызов работает.
P/S заранее прошу прощения если тут есть какое то ламерство.
Заранее спасибо!!!
Похожие темы
- Форум Передача виджета. (2005)
- Форум И в последний раз о передаче виджета :( (2005)
- Форум Как отвязать QPixmap от Pixmap'а? (2015)
- Форум Перетаскивание QDockWidget в другой QMainWindow (2018)
- Форум urxvt в i3wm (2014)
- Форум Qt как сделать slider который меняет значение переменной от min=0 до max=4880 (2013)
- Форум Помогите побороть QGraphicsScene (2014)
- Форум Динамический массив (2005)
- Форум Можно ли подружить glubuild2dmipmaps и qt? (2022)
- Форум [C] Динамический массив (2008)