#ifndef DELEGATE_H
#define DELEGATE_H
#include <QItemDelegate>
#include <QWidget>
#include <QLineEdit>
#include <QComboBox>
#include <QRegExp>
#include <QRegExpValidator>
class doubleDelegate : public QItemDelegate
{
Q_OBJECT
public:
doubleDelegate(QObject *parent = nullptr): QItemDelegate(parent) {
}
QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option,const QModelIndex &index) const
{
Q_UNUSED(option)
Q_UNUSED(index)
QLineEdit *editor = new QLineEdit(parent);
QRegExp reg("[-]*(\\d+)\\.(\\d+)");
QValidator *validator = new QRegExpValidator(reg);
editor->setValidator(validator);
return editor;
}
void setEditorData(QWidget *editor, const QModelIndex &index) const
{
double value = index.model()->data(index).toDouble();
QLineEdit *line = static_cast<QLineEdit*>(editor);
line->setText(QString::number(value,12,'g'));
}
void setModelData(QWidget *editor, QAbstractItemModel *model,const QModelIndex &index) const
{
QLineEdit *line = static_cast<QLineEdit*>(editor);
//spinBox->interpretText();
double value = line->text().toDouble();
model->setData(index, value);
}
void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
Q_UNUSED(index)
editor->setGeometry(option.rect);
}
};
class integerDelegate : public QItemDelegate
{
Q_OBJECT
public:
integerDelegate(QObject *parent = nullptr): QItemDelegate(parent) {
}
QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option,const QModelIndex &index) const
{
Q_UNUSED(option)
Q_UNUSED
Qt代理模型类设计
于 2023-03-08 17:36:02 首次发布
![](https://img-home.csdnimg.cn/images/20240709112858.png)