gpt4 book ai didi

c++ - 未调用 QTreeWidget 中的 QItemDelegate setModelData

转载 作者:太空宇宙 更新时间:2023-11-04 14:10:41 24 4
gpt4 key购买 nike

我正在尝试将委托(delegate)设置为我的 QTreeWidget。问题是永远不会调用委托(delegate) setModelData。调用 createEditor 和 setEditorData。

由于我创建的编辑器是简单的 QLineEdit,因此不必发出 commitData() 信号。我还尝试发出此信号以防万一,当发出 editLine editingFinished() 时,但这并不能解决问题。据我了解,文档说对于像 QLineEdit setModelData 这样的简单小部件,应该在不发出 commitData 信号的情况下调用,因此以下代码应该可以工作:

MyDlg::MyDlg()
{
mTreeWdg->setItemDelegate(new TestDelegate( this ));
}
MyDlg::OnTreeItemDoubleCliked(QTreeeWidget* item,int column)
{
if(column != 1) return;
item->setFlags(Qt::ItemIsEditable);
mTreeWdg->editItem(item,column);
}

TestDelegate::TestDelegate(QObject *parent )
:QItemDelegate(parent)
{
}

QWidget* TestDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option,
const QModelIndex &index) const
{
if(index.column() == 1) // value column
{
QLineEdit* edit = new QLineEdit(parent);
return edit;
}
else return 0; // no editor attached
}

void TestDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const
{
if(index.column() == 1)
{
QLineEdit* edit = static_cast<QLineEdit*> (editor);
edit->setText("damn");
}
}

void TestDelegate::setModelData(QWidget *editor, QAbstractItemModel *model,const QModelIndex &index)
{
if(index.column()!= 1)
return;
}

void TestDelegate::updateEditorGeometry(QWidget *editor,const QStyleOptionViewItem &option, const QModelIndex &index) const
{
editor->setGeometry(option.rect);
}

最佳答案

void TestDelegate::setModelData(QWidget *editor, QAbstractItemModel *model,const QModelIndex &index) must be const:

void setModelData(QWidget *editor, QAbstractItemModel *model,const QModelIndex &index) const

看看上面的声明。

关于c++ - 未调用 QTreeWidget 中的 QItemDelegate setModelData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14561316/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com