#qt #drag-and-drop #qtreewidget #toplevel
#qt #перетаскивание #qtreewidget #верхний уровень
Вопрос:
У меня есть один QTreeWidget, который отображает список объектов только на верхнем уровне. Таким образом, вы можете рассматривать его как виджет списка. Поскольку QListWidget не поддерживает многоколоночный режим, я использую QTreeWidget.
Я управлял свойствами, связанными с перетаскиванием, подобным образом.
dragEnabled = true
dragDropOverwriteMode = true
dragDropMode = InternalMove
Проблема в том, что когда я перетаскиваю элементы в этом treewidget, отброшенный элемент переходит в дочерний элемент другого элемента, а это не то, что я хочу. Мне нужен только один верхний уровень, потому что мне нужен список, а не дерево.
Есть ли какой-либо способ реализовать только переупорядочение элементов? Если нет, можете ли вы предоставить мне другой способ вместо QTreeWidget?
Комментарии:
1. Вы пробовали QTableWidget ?
2. о, я решил эту проблему с помощью QTreeWidget. спасибо.
Ответ №1:
Используя следующий код, я мог бы создать сортируемый, многоколоночный, вызываемый контекстным меню список, используя QTreeView.
ui->sensorTreeView->setColumnCount(2);
ui->sensorTreeView->setSelectionMode(QAbstractItemView::MultiSelection);
ui->sensorTreeView->setSelectionBehavior(QAbstractItemView::SelectRows);
ui->sensorTreeView->setContextMenuPolicy(Qt::CustomContextMenu);
ui->sensorTreeView->setEditTriggers(QAbstractItemView::NoEditTriggers);
ui->sensorTreeView->setItemsExpandable(false);
ui->sensorTreeView->setExpandsOnDoubleClick(false);
ui->sensorTreeView->setDragEnabled(true);
ui->sensorTreeView->viewport()->setAcceptDrops(true);
ui->sensorTreeView->setDropIndicatorShown(true);
ui->sensorTreeView->setDragDropMode(QAbstractItemView::InternalMove);