这应该如何通过使用 model->setData() 方法调用来完成?
我从 QStandardItemModel 派生了一个名为“MyStandardItemModel”的类。通过覆盖受保护的虚拟标志方法,我使我的第三列和第四列不可编辑。事情是这样的:
#define TX_PACKET_COLUMN (4u)
#define RX_PACKET_COLUMN (5u)
Qt::ItemFlags MyStandardItemModel::flags(const QModelIndex& index) const
{
if (index.column() == TX_PACKET_COLUMN || index.column() == RX_PACKET_COLUMN)
{
return (QStandardItemModel::flags(index) & ~Qt::ItemIsEditable);
}
else
{
return QStandardItemModel::flags(index);
}
}
...
//Set model
ui->testCaseTableView->setModel(model);
完成此操作后,我无法编辑第三列和第四列中的单元格。
现在,我希望当我双击这些单元格时,会出现一个弹出对话框。我将修改该对话框的可编辑字段中的一些数据,然后将其复制回代码内的不可编辑单元格。
我试图为 QTreeView 编写一个 doubleclick() 处理程序,然后将一些数据复制到单元格中,以查看是否可以将数据复制到不可编辑的单元格中。
此操作失败,数据未写入不可编辑的单元格。
在这里您可以找到双击处理程序:
void MainWindow::on_testCaseTableView_doubleClicked(const QModelIndex &index)
{
QVariant variant;
variant.toString() = "AA";
if((index.column() == TX_PACKET_COLUMN)||(index.column() == RX_PACKET_COLUMN))
{
model->setData(index, variant); // set new value
}
}
setData(..) 操作正在清除单元格中已写入的数据,但未写入字符串“AA”。请建议如何将一些数据复制到代码内的不可编辑单元格。