LineEditDelegate.h文件
#ifndef LINEEDITDELEGATE_H
#define LINEEDITDELEGATE_H
#include <QWidget>
#include <QItemDelegate>
#include <QLineEdit>
#include <QStyledItemDelegate>
class LineEditDelegate : public QStyledItemDelegate
{
Q_OBJECT
public:
LineEditDelegate(QObject *parent = nullptr);
public:
QWidget *createEditor(QWidget * parent, const QStyleOptionViewItem & option, const QModelIndex & index) const;
void setEditorData(QWidget * editor, const QModelIndex & index) const;
void setModelData(QWidget * editor, QAbstractItemModel * model, const QModelIndex & index) const;
};
#endif
LineEditDelegate.cpp文件
#include "LineEditDelegate.h"
LineEditDelegate::LineEditDelegate(QObject *parent)
: QStyledItemDelegate(parent)
{
}
QWidget *LineEditDelegate::createEditor(QWidget * parent, const QStyleOptionViewItem & option, const QModelIndex & index) const
{
QLineEdit *editor = new QLineEdit(parent);
editor->setValidator(new QIntValidator(0, 99999, parent));
return editor;
}
void LineEditDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const
{
QString text = index.model()->data(index, Qt::EditRole).toString();
QLineEdit *lineEdit = static_cast <QLineEdit*>(editor);
lineEdit->setText(text);
}
void LineEditDelegate::setModelData(QWidget * editor, QAbstractItemModel * model, const QModelIndex & index) const
{
QLineEdit *lineEdit = static_cast <QLineEdit*>(editor);
QString text = lineEdit->text();
model->setData(index, text, Qt::EditRole);
}
使用
LineEditDelegate* m_lineDlg = new LineEditDelegate;
m_tableWidget->setItemDelegateForColumn(0, m_lineDlg);
示例工程