项目中需要实现在QTableWidget表格中只能输入浮点数的要求,但上网搜索后,发现使用QLineEdit代理的方法虽然能实现只能输入浮点数的要求[https://blog.youkuaiyun.com/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 = new QRegExpValidator(rx, this);
edit->setValidator(pReg);
ui->tableWidge

本文介绍了如何在Qt的QTableWidget中实现只允许输入浮点数的功能,同时保持表格的复制粘贴等操作。通过在cellDoubleClicked和currentCellChanged槽中使用QLineEdit代理,并在编辑结束时将数据写回单元格,解决了限制输入类型与保持表格特性的冲突问题。
最低0.47元/天 解锁文章
1万+





