i'm beging work with QT and have a problem. I have a project with 4 classes and a mainWindow (dialog). My first problem is reading a txt.file. If i put the code conteined in void fileTxt::setContaRigheFileTxt() into void Dialog::on_buttonBox_clicked(QAbstractButton *Open) it works perfectly. I can open my file, the labels are printed and the content of the file is written in the textEditBox. But as you can see in the following code, in void Dialog::on_buttonBox_clicked(QAbstractButton *Open) i called the setContaRigheFileTxt() funtion and i can't open my file (first error: tr and ui was not declared in this scope)
main.cpp
#include "dialog.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Dialog w;
w.show();
return a.exec();
}
dialog.cpp
#include "dialog.h"
#include "ui_dialog.h"
#include <fileTxt.h>
#include <string>
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
}
Dialog::~Dialog()
{
delete ui;
}
/* APRE FILE ROF .txt DA CONVERTIRE */
void Dialog::on_buttonBox_clicked(QAbstractButton *Open)
{
fileTxt _fileTxt;
/* FROM
_fileTxt.setContaRigheFileTxt(); // apre il file .txt per contare le righe
TO */
_fileTxt.setContaRigheFileTxt(ui); // apre il file .txt per contare le righe
}
dialog.h
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
#include <QMainWindow>
#include <QAbstractButton>
namespace Ui {
class Dialog;
}
class Dialog : public QDialog
{
Q_OBJECT
public:
explicit Dialog(QWidget *parent = 0);
~Dialog();
private slots:
void on_buttonBox_clicked(QAbstractButton *Open);
private:
Ui::Dialog *ui;
};
#endif // DIALOG_H
fileTxt.cpp
#include "dialog.h"
#include "ui_dialog.h"
#include "fileTxt.h"
#include <QTextStream>
#include <QLabel>
#include <QFileDialog>
#include <QFile>
#include <QMessageBox>
#include <QObject>
/* COSTRUTTORE - CREA FILE .TXT */
fileTxt::fileTxt()
{
}
/* DISTRUTTORE */
fileTxt::~fileTxt()
{
}
/* CONTARIGHE FILE .TXT */
/* FROM
void fileTxt::setContaRigheFileTxt()
TO */
void fileTxt::setContaRigheFileTxt(Ui::Dialog *ui)
{
QString fileName = QFileDialog::getOpenFileName(this, tr("Apri File"), "C:\\Users\\Massimo Di Natale\\Documents\\Programmi C++ 11\\Programmi_QT\\Ericsson", tr("File ROF (R*.txt)"));
if (!fileName.isEmpty()) // se non è vuoto
{
QFile file(fileName); // se è vuoto
if (!file.open(QIODevice::ReadOnly))
{
QMessageBox::critical(this, tr("Errore"), tr("Non posso aprire questo file"));
return;
} // end if
/* ETICHETTE: CONTROLLO BYZ/CORREZIONE COORDINATE */
QFont f( "Arial", 12); // imposta il font
ui->label_3->setFont(f);
ui->label_4->setFont(f);
ui->label_5->setFont(f);
ui->label_6->setFont(f);
ui->label_3->setAlignment(Qt::AlignCenter); // imposta l'allineamento
ui->label_4->setAlignment(Qt::AlignCenter);
ui->label_5->setAlignment(Qt::AlignCenter);
ui->label_6->setAlignment(Qt::AlignCenter);
ui->label_3->setText("Controllo che le BYZ richieste siano inserite nel DataBase...");
ui->label_4->setText("e");
ui->label_5->setText("correzione coordinate");
ui->label_6->setText("in corso...");
QTextStream in(&file); // legge il file .txt
ui->textEdit->setText(in.readAll()); // lo stampa nella textEdit
file.close(); // chiude il file aperto per la lettura
}
fileTxt.h
#ifndef FILETXT_H
#define FILETXT_H
#include <string>
/* ADD */
#include "dialog.h"
#include "ui_dialog.h"
class fileTxt
{
public:
fileTxt();
virtual ~fileTxt();
/* FROM
void setContaRigheFileTxt();
TO */
void setContaRigheFileTxt(Ui::Dialog *ui);
protected:
private:
};
#endif // FILETXT_H