【问题标题】:QTreeWidget Drag and Drop only in Top LevelQTreeWidget 仅在顶层拖放
【发布时间】:2021-08-07 07:31:20
【问题描述】:

我有一个 QTreewidget,它仅在顶层显示对象列表。 因此,您可以将其视为列表小部件。 因为QListWidget不支持多列,所以我使用QTreeWidget。

我像这样控制拖放相关的属性。

dragEnabled  = true

dragDropOverwriteMode = true

dragDropMode = InternalMove

问题是当我在此树小部件中拖放项目时,拖放的项目进入其他项目的子项目,这不是我想要的。我只需要一个顶层,因为我需要的是列表,而不是树。

有没有什么方法可以只对物品进行重新排序? 如果没有,您能否提供其他方式代替 QTreeWidget?

【问题讨论】:

  • 你试过 QTableWidget 吗?
  • 哦,我用 QTreeWidget 解决了这个问题。谢谢你。

标签: qt drag-and-drop qtreewidget toplevel


【解决方案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);

【讨论】:

    猜你喜欢
    • 2017-05-13
    • 2018-04-15
    • 2014-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多