学习记录:QT中tableview的简简简简简单单单使用
程序员文章站
2022-05-22 19:52:33
...
table view的简单使用
以.txt文件中数据为例。
拖入几个控件
首先建立一个model,根据model来实现数据的修改
tmodel =new QStandardItemModel(ui->tableView);
ui->tableView->setModel(tmodel);
建立对应的槽函数,在槽函数中实现对应功能,txt文件中数据为1 2 3 4 5 6 7 8 9 10 11 12
1.打开文件
void Widget::on_pushButton_clicked()
{
QString Filename = QFileDialog::getOpenFileName(this,QString::fromLocal8Bit("打开一个文件"),"","*.txt");//打开文件
if(Filename !=NULL)
{
QFile aFile(Filename);
if(!aFile.exists())
{
QMessageBox::warning(this,QString::fromLocal8Bit("警告"),QString::fromLocal8Bit("文件不存在"));
}
else
{
aFile.open(QIODevice::ReadOnly|QIODevice::Text);
QString str = aFile.readAll();
QStringList Lstr= str.split(" ");
//tmodel->setHorizontalHeaderLabels(QStringList()<<QString::fromLocal8Bit("数字")<<"序号");
for(int i=0;i<Lstr.length()/2;i++)
{
for(int j=0;j<2;j++)
tmodel->setItem(i,j,new QStandardItem(Lstr[i*2+j]));
}
aFile.close();
}
}
}
效果:
2.插入数据
在选中的表格的下一行添加
void Widget::on_pushButton_2_clicked()
{
tmodel->insertRow(ui->tableView->currentIndex().row()+1);
}
3.删除
删除选中的一行
void Widget::on_pushButton_3_clicked()
{
tmodel->removeRow(ui->tableView->currentIndex().row());
}
效果:
4.保存数据
void Widget::on_pushButton_4_clicked()
{
QString fname=QFileDialog::getSaveFileName(this,QString::fromLocal8Bit("打开一个文件"),"","*.txt");
if(fname != NULL)
{
QFile bFile(fname);
bFile.open(QIODevice::WriteOnly|QIODevice::Text);
int rowCount = tmodel->rowCount();
int columnCount = tmodel->columnCount();
for(int i=0;i<rowCount;i++)
for(int j=0;j<columnCount;j++)
{
QByteArray str = tmodel->item(i,j)->text().toUtf8();
bFile.write(str,str.length());
bFile.write(" ",1);
}
bFile.close();
QMessageBox::information(this,QString::fromLocal8Bit("提示"),QString::fromLocal8Bit("保存成功"));
}
}
总结:
关于tableview还有很多用法,例如
添加表头:setHorizontalHeaderItem()
添加数据:append()
清除数据:clear()
等等等等等等等。。。。。。。。。。。。。。
这里记录一下自己的学习,再接再厉