QLineEdit输入框代理

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_H

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);

	限制输入 十六进制
	//int m_bitLen = 10;//最大输入位数
	//QString str = "[A-Fa-f0-9]{0," + QString::number(m_bitLen) + "}";
	//QRegExp regx(str);
	//QValidator *validator = new QRegExpValidator(regx, editor);
	//editor->setValidator(validator);
	
	限制输入 八进制
	//int m_bitLen = 10;//最大输入位数
	//QString str = "[0-7]{0," + QString::number(m_bitLen) + "}";
	//QRegExp regx(str);
	//QValidator *validator = new QRegExpValidator(regx, editor);
	//editor->setValidator(validator);

	限制输入 二进制
	//int m_bitLen = 10;//最大输入位数
	//QString str = "[0-1]{0," + QString::number(m_bitLen) + "}";
	//QRegExp regx(str);
	//QValidator *validator = new QRegExpValidator(regx, editor);
	//editor->setValidator(validator);

	//限制输入 只能输入为0-99999的数字
	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);
}

使用

	//设置第0列为输入框代理 限制第0列的输入
	LineEditDelegate* m_lineDlg = new LineEditDelegate;
	m_tableWidget->setItemDelegateForColumn(0, m_lineDlg);

示例工程

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值