c++ - 使 QTreeWidget 只有一列可编辑//疑难解答

标签 c++ qt items

请注意,这个问题不是问题 Making only one column of a QTreeWidgetItem editable 的重复问题,因为建议的解决方案不起作用。

你好,所以我只想让我的 treeWidget 的一列可编辑。

            propertyItems.push_back(new QTreeWidgetItem); //gets filled by the while-loop
            propertyItems[propertyItems.size()-1]->setText(0, prop.name); //sets the text of the item
            propertyItems[propertyItems.size()-1]->setText(1, prop.value);//set the text of the other item
            propertyItems[propertyItems.size()-1]->setFlags(Qt::ItemIsEditable);
            ui->treeWidget_3->insertTopLevelItem(ui->treeWidget_3->topLevelItemCount(), propertyItems[propertyItems.size()-1]); //appends the items
            counter ++;

void MainWindow::onTreeWidget3ItemDoubleClicked()
{
    if (ui->treeWidget_3->currentColumn() == 2) {
        ui->treeWidget_3->editItem(ui->treeWidget_3->currentItem(), ui->treeWidget_3->currentColumn());
    }
}

是我的方法。 ontreeWidget3ItemDoubleClickedtreeWidget::doubleClicked 相关联,treeWidget_3 没有 edit-triggers

但是:当我执行程序时,QTreeView 只是变灰。

话说,我也试过了

propertyItems[propertyItems.size()-1]->setFlags(propertyItems[propertyItem.size()].flags | Qt::ItemIsEditable);

treeWidget_3 不再变灰,但它仍然不可编辑...

我该如何解决这个问题?

顺便说一句:我是 Qt 的新手,所以我可能忘记了一些重要的事情。在这种情况下很抱歉。

最佳答案

documentation 中所述:

The QTreeWidgetItem class provides an item for use with the QTreeWidget convenience class.

这意味着它不适用于所有用例。解决方案是创建您自己的模型并重载返回 appropriate valuesflags(const QModelIndex& index) 方法(基本上 Qt::ItemIsEnabled 用于只读列,Qt::ItemIsEnabled | Qt::ItemIsEditable 用于可编辑列)。您可以从 index.column() 中获取该列。

Qt 提供了一个 example从树木和模型开始。

关于c++ - 使 QTreeWidget 只有一列可编辑//疑难解答,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42694150/

相关文章:

c++ - Qt 5.3 QPlainTextEdit 改变QTextCursor颜色

c++ - TableWidget 不显示项目的更新值

gridview - 如何在 Flutter 上使用 gridview 将硬编码的 1 个项目添加到列表的最后一个索引中

c# - 如何在 C# 的组合框中按值查找项目?

c++ - 输出输入的拼接版本

c++ - 我们可以使用 "this"指针获取对象名称吗

qt - 设置交换列的代理模型时自定义分层模型的 View 不正确

xcode - 在 xcode 7 中使用 Mac App 预配置菜单项

c++ - 具有不同对齐方式的嵌套结构如何在内存中布局?

c++ - typeid ("") != typeid(const char*)