[Interest] Tree widget: rearrange elements
senseiwa at gmail.com
Mon Aug 27 10:47:34 CEST 2012
I am now messing around my own QTreeWidget. I'm trying to let
rearrangement of items possible, allowing or disallowing drop events.
Obviously it doesn't work, otherwise I wouldn't seek your help! :)
Test case: in a tree there are "folders" and "files", and I can move
files on folders, since they can receive files. However, I shouldn't
drop file or folders onto files: they are leafs.
I don't know if even writing my own dropEvent is the right answer, but
that's what I did.
In my constructor, I start a new tree by simply adding items (tag 1 is
for folders, 2 for files):
txProjectView::txProjectView(QWidget *parent) : QTreeWidget(parent)
root = new QTreeWidgetItem(QStringList(QString("Root")), 1);
a = new QTreeWidgetItem(root, QStringList(QString("first!")), 1);
b = new QTreeWidgetItem(root, QStringList(QString("second")), 1);
i = new QTreeWidgetItem(a, QStringList(QString("i.txt")), 2);
j = new QTreeWidgetItem(b, QStringList(QString("j.txt")), 2);
k = new QTreeWidgetItem(b, QStringList(QString("k.txt")), 2);
Next, I repleace the dropEvent method. In this simple case I want to
discard them, since even this won't work:
void txProjectView::dropEvent(QDropEvent *event)
qWarning("mime: %s", qPrintable(event->mimeData()->html()));
// if I am a file, don't drop on me
// if I am a folder, accept drops
What happens? A complete mess. Items dropped simply disappear, and I get
this on the console:
QAbstractItemModel::endRemoveRows: Invalid index ( -1 , 0 ) in model
Can someone help me? I think this is a simple task, but I have no idea
how to do what I'm looking for. Even a simple project that accepts
drag&drop would be useful...
Thanks & Cheers!
More information about the Interest