我刚刚开始使用QT,所以请稍微耐心一点...... 我有一个可编辑的QTableWidget(实际上是一个子类),需要实现以下行为。 当用户键入不可接受的值时,我希望: 1)恢复原始值; 2)将焦点保持在单元格中并将其设置为编辑模式。
我目前正在使用itemChanged SIGNAL和QTableWidgetItem的子类。 哪一个是获得我需要的最佳方式? 任何提示,建议或参考都是非常受欢迎的。
如果您认为它有用,我可以发布一些代码。
侨 ALF。
答案 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 () );