Название: помогите найти ошибку
Отправлено: vol4enok от Июль 15, 2009, 19:54
Подскажите пожалуйста. вот кусок C++ (Qt) QList<QList<QRadioButton> > itemButtons; QList<QButtonGroup> group; QList<QVBoxLayout> buttonLayout; int size=buttonLayout.count(); buttonLayout.insert(size+1, new QVBoxLayout(frames.at(i))); QList<QRadioButton> list1; list1.append(new QRadioButton(pri[i].name, frames.at(i),"dfgdf")); itemButtons.insert(1,&list1); buttonLayout.at(size+1)->addWidget(list1.at(1));
программа запускается, но при наличии последней строки вылетает с ошибкой сегментировая. не подскажите, в чем может быть дело. работаю с qt3.3 и компилятором 2.95
Название: Re: помогите найти ошибку
Отправлено: ритт от Июль 15, 2009, 19:59
C++ (Qt) QList<QList<QRadioButton> > itemButtons; QList<QButtonGroup> group; QList<QVBoxLayout> buttonLayout; int size=buttonLayout.count(); buttonLayout.insert(size, new QVBoxLayout(frames.at(i))); QList<QRadioButton> list1; list1.append(new QRadioButton(pri[i].name, frames.at(i),"dfgdf")); itemButtons.insert(1,&list1); buttonLayout.at(size)->addWidget(list1.at(1));
Название: Re: помогите найти ошибку
Отправлено: lit-uriy от Июль 15, 2009, 20:04
Объяснение простое: счётчики всегда на еденицу больше макисального индекса, т.к. индекс начинается с 0, а счёт с 1
Название: Re: помогите найти ошибку
Отправлено: Alex Custov от Июль 16, 2009, 00:51
C++ (Qt) QList<QList<QRadioButton> > itemButtons; QList<QButtonGroup> group; QList<QVBoxLayout> buttonLayout; int size=buttonLayout.count(); buttonLayout.insert(size, new QVBoxLayout(frames.at(i))); QList<QRadioButton> list1; list1.append(new QRadioButton(pri[i].name, frames.at(i),"dfgdf")); itemButtons.insert(1,&list1); buttonLayout.at(size)->addWidget(list1.at(1));
хи-хи-хи C++ (Qt) QList<QList<QRadioButton> > itemButtons; QList<QButtonGroup> group; QList<QVBoxLayout> buttonLayout; int size=buttonLayout.count(); buttonLayout.insert(size+1, new QVBoxLayout(frames.at(i))); QList<QRadioButton> list1; list1.append(new QRadioButton(pri[i].name, frames.at(i),"dfgdf")); itemButtons.insert(1,&list1); buttonLayout.at(size+1)->addWidget(list1.at(0));
проблема не в buttonLayout.at(size+1) - тут берётся элемент по тому же индексу, как и заносился. Проблема в list1.at(0). Если почитать документацию, чего автор не делал, то const T & QList::at ( int i ) const
Returns the item at index position i in the list. i must be a valid index position in the list (i.e., 0 <= i < size()). Доп. Да, и в Qt 3.3 не было QList. Чтот-то тут не так :)
Название: Re: помогите найти ошибку
Отправлено: vol4enok от Июль 16, 2009, 07:33
спасибо за ответы, надеюсь все получится ps в qt3 QList сам преобразуется в QPtrList (в данном случае).
Название: Re: помогите найти ошибку
Отправлено: spectre71 от Июль 16, 2009, 07:35
C++ (Qt) QList<QList<QRadioButton> > itemButtons; QList<QButtonGroup> group; QList<QVBoxLayout> buttonLayout; int size=buttonLayout.count(); buttonLayout.insert(size, new QVBoxLayout(frames.at(i))); QList<QRadioButton> list1; list1.append(new QRadioButton(pri[i].name, frames.at(i),"dfgdf")); itemButtons.insert(0,&list1); // ???? buttonLayout.at(size)->addWidget(list1.at(0));
Судя по frames.at(i), есть цикл - где? itemButtons.insert(0,&list1); ну и что происходит дальше с list1? Где остальной код?
Название: Re: помогите найти ошибку
Отправлено: vol4enok от Июль 16, 2009, 15:18
спасибо, теперь все работает=)
|