Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: ASGAlex от Июль 03, 2009, 02:37



Название: не могу подружиться с QListWidget: не добавляются итемки
Отправлено: 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

Код почему-то не работает. Хоть и ошибок не выдаёт. Элемент в список не добавляется. В чем косяк?


Название: Re: не могу подружиться с QListWidget: не добавляются итемки
Отправлено: ритт от Июль 03, 2009, 02:44
родителя, наверное, хочет...
а почему вообще так? почему бы в ТестДата не добавить метод, возвращающий имя теста, а потом это имя уже использовать в контексте?


Название: Re: не могу подружиться с QListWidget: не добавляются итемки
Отправлено: ASGAlex от Июль 03, 2009, 22:37
Родителя? Забавно... дело в том, что до этого делал так:
Код:
QListWidgetItem* i=new QListWidgetItem;
i->setText("тра-ля-ля");
testList->addItem(i);
и это работало. То есть родитель особо-то и не нужен ему, получается.

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


Название: Re: не могу подружиться с QListWidget: не добавляются итемки
Отправлено: ритт от Июль 03, 2009, 23:42
Родителя? Забавно... дело в том, что до этого делал так:
Код:
QListWidgetItem* i=new QListWidgetItem;
i->setText("тра-ля-ля");
testList->addItem(i);
и это работало. То есть родитель особо-то и не нужен ему, получается.
тогда дело не в этом - ищи ошибки в своём коде.


Название: Re: не могу подружиться с QListWidget: не добавляются итемки
Отправлено: ASGAlex от Июль 04, 2009, 23:34
Ошибки так и не нашек, пофиксил всё с помощью коварного обмана:
Код:
	QListWidgetItem *i=new QListWidgetItem;
i->setText("unt");
tests.last().list_item=i;
if(!tests.isEmpty())
testList->addItem(i);
Не знаю, насколько проблему можно считать решенной, но пока что всё работает, посмотрим, какие подводные камни ждут впереди...


Название: Re: не могу подружиться с QListWidget: не добавляются итемки
Отправлено: ритт от Июль 05, 2009, 15:12
вот тебе первый подводный камень - краш на строке tests.last().list_item=i, если лист пустой :)


Название: Re: не могу подружиться с QListWidget: не добавляются итемки
Отправлено: break от Июль 05, 2009, 15:21
Цитировать
Я бы рад использовать только имя, вот только как тогда переставить элемент списка? Меня даг-анд-дропы не устраивают, нужно просто по нажатию кнопки. Тут ведь нету функции пересставления элементов, приходится удалять старый и создавать новый.

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