Russian Qt Forum
Ноябрь 23, 2024, 17:06 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: помогите найти ошибку  (Прочитано 4474 раз)
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
« Последнее редактирование: Июль 15, 2009, 19:55 от vol4enok » Записан
ритт
Гость
« Ответ #1 : Июль 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));
 
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #2 : Июль 15, 2009, 20:04 »

Объяснение простое:
счётчики всегда на еденицу больше макисального индекса, т.к. индекс начинается с 0, а счёт с 1
Записан

Юра.
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #3 : Июль 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. Чтот-то тут не так Улыбающийся
« Последнее редактирование: Июль 16, 2009, 00:53 от AX » Записан
vol4enok
Гость
« Ответ #4 : Июль 16, 2009, 07:33 »

спасибо за ответы, надеюсь все получится
ps в qt3 QList сам преобразуется в QPtrList (в данном случае).
Записан
spectre71
Гость
« Ответ #5 : Июль 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?
Где остальной код?
Записан
vol4enok
Гость
« Ответ #6 : Июль 16, 2009, 15:18 »

спасибо, теперь все работает=)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.298 секунд. Запросов: 23.