• 4236阅读
  • 3回复

[提问]QTableWidget在插入一行后将表中内容保存出错 [复制链接]

上一主题 下一主题
离线jszzz119
 

只看楼主 倒序阅读 楼主  发表于: 2012-02-02
关键词: QTableWidgeQfile
void tables::on_add_clicked()
{
    int rows=ui->TableInfor->rowCount();    
ui->TableInfor->insertRow(rows);  
ui->TableInfor->selectRow(rows);
}
void tables::on_writ_clicked()
{  
  rows=ui->TableInfor->rowCount();  
columns=ui->TableInfor->columnCount();  
for(int i=0;i<rows;i++)    
for(int j=0;j<columns;j++)
{      
    if(ui->TableInfor->item(i,j)->text()=="")        
      ui->TableInfor->item(i,j)->setText("null");  
       inforow[j]=ui->TableInfor->item(i,j)->text();  
   }  
  QFile file("info.dat");  
  if(!file.open(QIODevice::WriteOnly))  
  {      
  std::cerr <<"Cannot open file for writing: "        
          <<qPrintable(file.errorString()) <<std::endl;      
  return;  
  }    
QDataStream out(&file);  
   w1=QString::number(rows,10);  
   w2=QString::number(columns,10);  
   out<<w1<<w2;    
for(int i=0;i<rows;i++)    
  out <<inforow[0]<<inforow[1]<<inforow[2]<<inforow[3]<<inforow[4]<<inforow[5];
}
《铸╰
离线jszzz119

只看该作者 1楼 发表于: 2012-02-04
rows=ui->TableInfor->rowCount();
    columns=ui->TableInfor->columnCount();

    QFile file("info.dat");
    if(!file.open(QIODevice::WriteOnly))
    {
        std::cerr <<"Cannot open file for writing: "
                  <<qPrintable(file.errorString()) <<std::endl;
        return;
    }

    QTextStream out(&file);
    for(int row=0;row<rows;++row){
        for( int column=0;column<columns;++column){
            QString str=ui->TableInfor->item(row,column)->text();
            if(!str.isEmpty())
                out<<row<<" "<<column<<" "<<str<<endl;
        }
现在貌似没错了
《铸╰
离线jszzz119

只看该作者 2楼 发表于: 2012-02-04
发现现在贴代码的贴都没人看··· 555
《铸╰
离线XChinux

只看该作者 3楼 发表于: 2012-02-06
解决了就好
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
快速回复
限100 字节
 
上一个 下一个