[+] Jak z QTreeWidget zrobić K3ListWidget
: 08 stycznia 2009, 00:17
Witam.
Zapytałem już o to na forum KDE ale może i tu nie zaszkodzi.
Otóż problem polega na tym że usiłuję napisać odtwarzacz muzyki podobny do amaroka czy foobara jednak nie mogę ustawić QTreeWidget'a tak aby sortowanie wg kolumn wyłączało się w pewnych sytuacjach(to akurat mniejszy problem już z grubsza mam pomysł jak to zrobić) oraz aby elementy przenoszone (DragDrop) zawsze były elementami pierwszego stopnia tj. żeby nie wrzucał ich jako dzieci do innych elementów.
W nowym amaroku playlista jest zupełnie inna, zajrzałem do JuK'a ale tam używa widgetu K3ListWidget który nie jest zalecany. Więc jeśli wie ktoś jak zmusić QTreeWidget aby był taki jak K3ListWidget lub wie gdzie można podpatrzeć coś podobnego(oczywiście w Qt4) to byłbym wielce wdzięczny za pomoc.
[edit]
Dobra już smemu udało mi się dojść jak to zrobić. Każdemu nowemu elementowi trzeba ustawić flagi:
Chodzi głównie o to żeby flaga Qt::ItemIsDropEnabled była wyłaczona.
A tak w całości (znaczy w takim małym skrócie ale jak ktoś robi w Qt to będzie wiedzić ocb) może się kiedyś komuś przyda:
No i teraz QtreeWidget będzie się zachowywał tak jak K3ListWidget.
Pozdro.
Zapytałem już o to na forum KDE ale może i tu nie zaszkodzi.
Otóż problem polega na tym że usiłuję napisać odtwarzacz muzyki podobny do amaroka czy foobara jednak nie mogę ustawić QTreeWidget'a tak aby sortowanie wg kolumn wyłączało się w pewnych sytuacjach(to akurat mniejszy problem już z grubsza mam pomysł jak to zrobić) oraz aby elementy przenoszone (DragDrop) zawsze były elementami pierwszego stopnia tj. żeby nie wrzucał ich jako dzieci do innych elementów.
W nowym amaroku playlista jest zupełnie inna, zajrzałem do JuK'a ale tam używa widgetu K3ListWidget który nie jest zalecany. Więc jeśli wie ktoś jak zmusić QTreeWidget aby był taki jak K3ListWidget lub wie gdzie można podpatrzeć coś podobnego(oczywiście w Qt4) to byłbym wielce wdzięczny za pomoc.
[edit]
Dobra już smemu udało mi się dojść jak to zrobić. Każdemu nowemu elementowi trzeba ustawić flagi:
Kod: Zaznacz cały
setFlags(Qt::ItemIsSelectable|Qt::ItemIsDragEnabled|Qt::ItemIsEditable|Qt::ItemIsEnabled);
A tak w całości (znaczy w takim małym skrócie ale jak ktoś robi w Qt to będzie wiedzić ocb) może się kiedyś komuś przyda:
Kod: Zaznacz cały
QTreeWidget treeWidget=new QTreeWidget();
treeWidget->setRootIsDecorated(false);
treeWidget->setDropIndicatorShown(true);
treeWidget->setItemsExpandable(false);
treeWidget->setDragDropMode(QAbstractItemView: :D ragDrop);
treeWidget->model()->setSupportedDragActions(Qt::MoveAction);
...
QTreeWidgetItem *newItem=new QTreeWidgetItem(treeWidget);
newItem->setFlags(Qt::ItemIsSelectable|Qt::ItemIsDragEnabled|Qt::ItemIsEditable|Qt::ItemIsEnabled);
Pozdro.