重命名QTreeView项目

时间:2015-11-28 04:06:55

标签: c++ qt qtreeview qstandarditemmodel qstandarditem

我一直在寻找相当长的一段时间,而且我还没有找到尝试在QTreeView中重命名项目的解决方案。基本上我的意思是,当您在QTreeView中双击某些内容时,您可以选择重命名该项目。当用户完成编辑名称时,我需要一个信号,告诉我树中的索引或编辑的QStandardItem,这样我就可以更改附加到QStandardItem的特定项目名称。

这可能有点模糊,我无法真正提供我的来源,因为它需要我给你我的整个项目,这是几个演出。 如果你需要我解释其他任何我会尽我所能的事情,我还会包括一个我正在谈论的图像,以便更好地理解。

Double Click Renaming

1 个答案:

答案 0 :(得分:0)

  

基本上我的意思是,当您在QTreeView中双击某些内容时,您可以选择重命名该项目。

使用DESTDIR的{​​{3}}功能设置QStandardItem

Qt::ItemIsEditable

#include <QtWidgets> int main(int argc, char *argv[]) { QApplication a(argc, argv); QMainWindow w; QTreeView *treeView = new QTreeView; QStandardItemModel model(4, 1); for (int row = 0; row < 4; ++row) { QStandardItem *item = new QStandardItem(QString("row %0").arg(row)); item->setFlags(item->flags() | Qt::ItemIsEditable); model.setItem(row, 0, item); } treeView->setModel(&model); w.setCentralWidget(treeView); w.show(); return a.exec(); } 标志与现有标志进行“或”非常重要,否则您将最终使用已禁用的项目。例如,以下是与现有OR进行OR运算后的标志:

Qt::ItemIsEditable

没有现有的:

QFlags<Qt::ItemFlags>(ItemIsSelectable|ItemIsEditable|ItemIsDragEnabled|ItemIsDropEnabled|ItemIsEnabled)
  

当用户完成编辑名称时,我需要一个信号,告诉我树中的索引或编辑的QStandardItem,这样我就可以更改附加到QStandardItem的特定项目名称。

您可以连接到QFlags<Qt::ItemFlags>(ItemIsEditable) 的{​​{1}}信号:

dataChanged()