Я ищу работу с QT и имею проблему. У меня есть проект с 4 классами и mainWindow (диалог). Моя первая проблема заключается в чтении txt.file. Если я поместил код, заключенный в void fileTxt :: setContaRigheFileTxt() в void Dialog :: on_buttonBox_clicked (QAbstractButton * Open), он отлично работает. Я могу открыть файл, ярлыки напечатаны, а содержимое файла записано в текстовом поле. Но как вы можете видеть в следующем коде, в void Dialog :: on_buttonBox_clicked (QAbstractButton * Open), я вызвал функцию setContaRigheFileTxt(), и я не могу открыть файл (первая ошибка: tr и ui не были объявлены в этой области)QT C++ Как я могу получить доступ к пользовательскому интерфейсу MainWindow из другого класса
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
К сожалению, я очень новый в C++ и QT, а также мой английский не так хорош, поэтому ответ в другом посте мне тоже не помогает (также код не является полным, поэтому его очень сложно понять) –