实现过程是利用, itemDoubleClicked 和 itemChanged两个信号
得到的效果:
当输入非正负整数、正负浮点数时,会还原原本的内容。
主要代码如下:
.h
class SetMessageDialog
{
Q_OBJECT
public:
explicit SetMessageDialog(QWidget *parent = nullptr);
~SetMessageDialog();
private slots:
void on_tableWidget_itemDoubleClicked(QTableWidgetItem *item);
void on_tableWidget_itemChanged(QTableWidgetItem *item);
private:
QRegExp rx;
QString old_text;
};
.cpp
//
void SetMessageDialog::on_tableWidget_itemDoubleClicked(QTableWidgetItem *item)
{
//1、记录旧的单元格内容
old_text = item->text();
}
void SetMessageDialog::on_tableWidget_itemChanged(QTableWidgetItem *item)
{
//2、匹配正负整数、正负浮点数
QString Pattern("(-?[1-9][0-9]+)|(-?[0-9])|(-?[1-9]\\d+\\.\\d+)|(-?[0-9]\\.\\d+)");
QRegExp reg(Pattern);
//3.获取修改的新的单元格内容
QString str=item->text();
//完全匹配
if(reg.exactMatch(str))
{
qDebug()<<"匹配成功";
}
else {
qDebug()<<"匹配失败";
item->setText(old_text); //更换之前的内容
}
}