我想从文本文件中读取矩阵的大小和值。 文本文件的示例 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);
}
#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;
};
答案 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()
。如果该名称中没有成员函数,那么我们对您发布的代码没有多大帮助。