项目中需要实现在QTableWidget表格中只能输入浮点数的要求,但上网搜索后,发现使用QLineEdit代理的方法虽然能实现只能输入浮点数的要求[https://blog.csdn.net/gossiplee/article/details/73935771]但这样做表格不能选中,导致无法实现表格的复制粘贴等功能,这应该是因为QTableWidgetItem被QLineEdit取代导致的。所以想到一种方法既可以实现限制表格内容,又可以保留表格的特性。
首先在Mainwindow.h加入变量
QString pre;
int isfc=0;
int isclicked=0;
然后转到表格的cellDoubleClicked槽和currentCellChanged槽,槽内代码如下
void MainWindow::on_tableWidget_cellDoubleClicked(int row, int column)
{
QString cur;
if(!(ui->tableWidget->item(row,column)==NULL))
{
cur=ui->tableWidget->item(row,column)->text();
}
else
{
cur="";
}
edit=new QLineEdit;
edit->setText(cur);
QRegExp rx("^(-?[0]|-?[1-9][0-9]{0,5})(?:\\.\\d{1,4})?$|(^\\t?$)");
QRegExpValidator *pReg