从文本文件QT GUI C ++中读取行和列

时间:2015-10-11 10:32:01

标签: c++ qt

我想从文本文件中读取矩阵的大小和值。 文本文件的示例 graphe.txt

4 (the size of the matrix)
1 0 1 0
1 1 1 1
0 1 1 1
0 0 0 1

我尝试了一段代码,但不幸的是它没有用。我遇到了这个错误:

error: 'class MainWindow' has no member named 'display' this->display->setText(val);
error: cannot convert 'QString' to 'int' in assignment
              matrice[ligne][i]=val;
 void MainWindow::remplir_matrice(int taille_mat,int matrice[][50] )
 {

  QFile file("/home/yosra/degré/degré/graphe.txt");
 if (file.open(QIODevice::ReadOnly))
  { 
     QTextStream in(&file);
     int i=1;
     int ligne=1;
     while ((!in.atEnd())&&(ligne<=taille_mat))
        {
           ligne++;
          QString line = in.readLine();
          QStringList list = line.split(" ");
          QString val = list.at(i);
          this->display->setText(val);
          val.toInt();
          matrice[ligne][i]=val;
           i++;
        }
   file.close();
  }


 }
  void MainWindow::afficher(int matrice[][50],int taille_mat)
    {
      qDebug()<<" les elements de matrice";
      for(int i=0;i<taille_mat;i++)
       {
          for(int j=0;j<taille_mat;j++)
             qDebug()<<"M "<<matrice[i][j]<<endl;
       }
    }
 void MainWindow::parourir_fichier(int matrice[50][50],int taille_mat)

   {


    QFile file("/home/y/degré/classement/graphe.txt");

    if (file.open(QIODevice::ReadOnly))
      {
         QTextStream in(&file);
         QStringList list;
         QString line = in.readLine();
         QString val = list.at(0);
         this->display->setText(val);
         val.toInt();
         taille_mat=val;
         qDebug() << "taille_mat=" << taille_mat<<endl;
         file.close();

     }
      remplir_matrice(taille_mat,matrice);
      afficher(matrice,taille_mat);


  }

这是我的MainWindow标题

  #include <QMainWindow>

  namespace Ui {
  class MainWindow;
               }

  class MainWindow : public QMainWindow
    {
      Q_OBJECT

    public:
     explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
     void remplir_matrice(int taille_mat,int matrice[][50] );
     void parourir_fichier(int matrice[][50],int taille_mat);
     void afficher(int matrice[][50],int taille_mat);

    private:
     Ui::MainWindow *ui;
     int matrice[50][50];
     int taille_mat;
  };

2 个答案:

答案 0 :(得分:1)

可能是你的意思:

ui->display->setText(val);

MainWindow类没有指向display对象的指针。也许使用Qt Creator编辑器将display对象创建为TextEdit字段?

<强>更新

如果您只是想在开发代码时看到某个值,那么最好使用qDebug()(文档here)。您需要包括才能完成这项工作。从Qt Creator运行应用程序时,输出将显示在输出窗格中。

#include <QDebug>

// ...further down in your code:

qDebug() << "Output of val:" << val;     

答案 1 :(得分:0)

第二条错误信息非常清楚,不是吗? QString无法自动转换为int。我不太了解Qt,但快速谷歌搜索显示存在toInt member function,所以以下内容可能有效:

matrice[ligne][i]=val.toInt();

对于第一条错误消息,this->display假设MainWindow中存在成员变量。如果display是成员函数(它当然听起来像一个),那么您需要括号:this->display()。如果该名称中没有成员函数,那么我们对您发布的代码没有多大帮助。