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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: не могу подружиться с QListWidget: не добавляются итемки  (Прочитано 4517 раз)
ASGAlex
Гость
« : Июль 03, 2009, 02:37 »

Никак в толк взять не могу... Может кто просветит меня? Вот такой вот примерно код имеется:
Код:
class TestData 
{
...
QListWidgetItem* list_item;
}
TestData::TestData()
{
list_item=new QListWidgetItem;
list_item->setText("untitled");
}
А в другом файле вот так:
Код:
TestData data;
tests.append(data);  //tests - это QList<TestData>
if(!tests.isEmpty())
testList->addItem(tests.last().list_item); //testList - это QListWidget

Код почему-то не работает. Хоть и ошибок не выдаёт. Элемент в список не добавляется. В чем косяк?
Записан
ритт
Гость
« Ответ #1 : Июль 03, 2009, 02:44 »

родителя, наверное, хочет...
а почему вообще так? почему бы в ТестДата не добавить метод, возвращающий имя теста, а потом это имя уже использовать в контексте?
Записан
ASGAlex
Гость
« Ответ #2 : Июль 03, 2009, 22:37 »

Родителя? Забавно... дело в том, что до этого делал так:
Код:
QListWidgetItem* i=new QListWidgetItem;
i->setText("тра-ля-ля");
testList->addItem(i);
и это работало. То есть родитель особо-то и не нужен ему, получается.

Я бы рад использовать только имя, вот только как тогда переставить элемент списка? Меня даг-анд-дропы не устраивают, нужно просто по нажатию кнопки. Тут ведь нету функции пересставления элементов, приходится удалять старый и создавать новый.
Записан
ритт
Гость
« Ответ #3 : Июль 03, 2009, 23:42 »

Родителя? Забавно... дело в том, что до этого делал так:
Код:
QListWidgetItem* i=new QListWidgetItem;
i->setText("тра-ля-ля");
testList->addItem(i);
и это работало. То есть родитель особо-то и не нужен ему, получается.
тогда дело не в этом - ищи ошибки в своём коде.
Записан
ASGAlex
Гость
« Ответ #4 : Июль 04, 2009, 23:34 »

Ошибки так и не нашек, пофиксил всё с помощью коварного обмана:
Код:
	QListWidgetItem *i=new QListWidgetItem;
i->setText("unt");
tests.last().list_item=i;
if(!tests.isEmpty())
testList->addItem(i);
Не знаю, насколько проблему можно считать решенной, но пока что всё работает, посмотрим, какие подводные камни ждут впереди...
Записан
ритт
Гость
« Ответ #5 : Июль 05, 2009, 15:12 »

вот тебе первый подводный камень - краш на строке tests.last().list_item=i, если лист пустой Улыбающийся
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #6 : Июль 05, 2009, 15:21 »

Цитировать
Я бы рад использовать только имя, вот только как тогда переставить элемент списка? Меня даг-анд-дропы не устраивают, нужно просто по нажатию кнопки. Тут ведь нету функции пересставления элементов, приходится удалять старый и создавать новый.

Все весьма странно - если вам надо переставлять элементы в каком-то списке вероятно должно быть поле отвечающее за их упорядычевание ORDER_NUM - вот его и можно менять при изменении порядка элементов выводимых на экран, а потом вызывать какой-то SORT. Удаление и создание новых элементов вместо перестановки - это 100% неправильный подход
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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