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

标签 c++ qt

我想从文本文件中读取矩阵的大小和值。 一个文本文件的例子 图形.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);


  }

这是我主窗口的标题

  #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;
  };

最佳答案

难道你的意思是:

ui->display->setText(val);

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


更新

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

#include <QDebug>

// ...further down in your code:

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

关于c++ - 从文本文件中读取行和列 QT GUI C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33063972/

相关文章:

c++ - 我如何检测两个文件条目是否引用与 Qt 相同的物理文件系统?

c++ - 编写可以访问私有(private)/ protected 状态的单元测试

c++ - C++ 箭头运算符 (->) 是否在所有情况下都返回左值?

c++ - Qt 在 Painter 设备外绘图

c++ - QT如何从像素绘制 map 并创建工具提示

c++ - 如何在不丢失鼠标抓取的情况下将 QGraphicsItem 移动到另一个场景?

c++ - 在 Qt C++ 中使用 Qtreewidget 列出文件夹

c++ - 使用模板元编程计算阶乘

c++ - 无法调用我的函数

c++ - 两次内联汇编调用与一次内联汇编调用中的内存被破坏?