当给定值不可接受时,重新引导QTableView单元格

时间:2013-07-03 11:58:13

标签: qt qtableview qitemdelegate

我有一个QTableView,它从自定义模型中获取数据,并使用自定义委托进行编辑。

//...
view->setModel(stockModel);
view->setItemDelegateForColumn(0, nameDelegate);

当用户编辑特定单元格时,它会键入一些文本(对象的名称),程序是否可以接受该文本(程序不希望重复名称)。

我的解决方案是让自定义委托有一个信号:notValidText(QModelIndex)并使用信号/插槽机制将信号连接到tableview编辑(QModelIndex)插槽。据我所知,这应该重新讨论有问题的细胞:

//implementation of the delegate
void NameDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const    QModelIndex &index)
{
    QLineEdit *line = static_cast<QLineEdit*>(editor);
    if(!model->setData(index, line->text(), Qt::EditRole))
    {
        emit notValidData(index);
    }
}

//connection of the view with the delegate
connect(nameDelegate, SIGNAL(notValidData(QModelIndex)), view, SLOT(edit(QModelIndex)));

不幸的是,这不是发生的事情,所以我做错了什么。如果有人能给我一个小费,我真的很感激。 我只是在这里放了一些代码来展示我做了什么,问你是否需要我发帖了。

提前致谢

0 个答案:

没有答案