QTableWidget具有自动恢复旧单元格值

时间:2016-01-12 19:53:11

标签: qt

我刚刚开始使用QT,所以请稍微耐心一点...... 我有一个可编辑的QTableWidget(实际上是一个子类),需要实现以下行为。 当用户键入不可接受的值时,我希望: 1)恢复原始值; 2)将焦点保持在单元格中并将其设置为编辑模式。

我目前正在使用itemChanged SIGNAL和QTableWidgetItem的子类。 哪一个是获得我需要的最佳方式? 任何提示,建议或参考都是非常受欢迎的。

如果您认为它有用,我可以发布一些代码。

侨 ALF。

1 个答案:

答案 0 :(得分:0)

  

我目前正在使用itemChanged SIGNAL ...

你应该继承QStyledItemDelegate

class CustomTableDelegate : public QStyledItemDelegate
{
    Q_OBJECT

    public:
        CustomTableDelegate (QObject * parent = 0);
        QWidget * createEditor (QWidget *, const QStyleOptionViewItem &, const QModelIndex &) const;
        bool editorEvent (QEvent *, QAbstractItemModel *, const QStyleOptionViewItem &, const QModelIndex &);
        void setEditorData (QWidget *, const QModelIndex &) const;
        void setModelData  (QWidget *, QAbstractItemModel *, const QModelIndex &) const;
};

setModelData内实施验证。

要使用自定义委托,您需要为QTableWidget

设置自定义委托
table->setItemDelegate (new CustomTableDelegate () );