QTreeWidget
列选择消息
联系信号:[signal] void QTreeWidget::itemSelectionChanged()
,处理条目被选择的消息。
获取QTreeWidget的选择列的信息
ui->treeWidget->setSelectionMode(QAbstractItemView::ExtendedSelection);
connect(ui->treeWidget, &QTreeWidget::itemSelectionChanged, this, [this]() {
qDebug() << " " << ui->treeWidget->currentItem()->text(0);
auto items = ui->treeWidget->selectedItems();
for (auto &item : items) {
qDebug() << "select items: " << item->text(0);
}
});
拖拽treewidget上的项目
拖拽treewidget上的项目,切换条目的上下关系,在dropEvent(QDropEvent *event)
中处理。
OnItem、AboveItem、BelowItem分别表示,拖动时,拖动对象在目标条目之上、上方、下方。
通过itemAt(event->pos())
获取当前拖动到的目的条目(本意是获取鼠标位置所在的条目),即下图中的中间条目(即灰色显示的条目,被移动的“滤镜5”条目所遮挡的那个条目)
switch (dropIndicatorPosition()) {
case QAbstractItemView::OnItem: {
break;
}
case QAbstractItemView::AboveItem: {
break;
}
case QAbstractItemView::BelowItem: {
break;
}
case QAbstractItemView::OnViewport:
return;
}
event->acceptProposedAction();