Witam wszystkich serdecznie.
Ostatnio napisałem quiz w QT, ale gdy chciałem go troszkę ulepszyć napotkałem dość poważny problem, z którym nie potrafię sobie sam poradzić. Oto kod :
MAINWINDOW.H
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QFile>
#include <QString>
#include <QMessageBox>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_pushButton_next_clicked();
private:
Ui::MainWindow *ui;
int nr_pytania=1;
void wczytaj_pytania();
};
struct Pytania
{
public:
QString pytanie;
QString odpowiedz[4];
};
#endif // MAINWINDOW_H
MAIN.CPP
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
MAINWINDOW.CPP
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
Pytania question[4];
wczytaj_pytania();
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_next_clicked()
{
QString x = QString::number(nr_pytania);
ui->label_nr_pyt->setText(x);
ui->tresc_pytania->setText(question[0].pytanie); // <--- question was not declared in that scope
}
void MainWindow::wczytaj_pytania()
{
QFile plik("pytania.txt");
if(!plik.open(QIODevice::ReadOnly))
{
QMessageBox::information(this,tr("Informacja"),tr("Nie znaleziono pliku z pytaniami."));
}
else
{
QString linia;
for(int i=0; i<4; i++)
{
linia=plik.readLine();
question[i].pytanie=linia; // <--- question was not declared in that scope
linia=plik.readLine();
question[i].odpowiedz[0]=linia;
linia=plik.readLine();
question[i].odpowiedz[1]=linia;
linia=plik.readLine();
question[i].odpowiedz[2]=linia;
linia=plik.readLine();
question[i].odpowiedz[3]=linia;
}
}
plik.close();
}
Problem polega na tym, że obiekt question jest niewidoczny dla funkcji
void MainWindow::on_pushButton_next_clicked()
jak i void MainWindow::wczytaj_pytania()
.
Próbowałem zmieniać private na public, ze struktury na klasę nawet zagnieżdżoną, ale bez skutku. Cały czas obiekt pozostaje niewidoczny w funkcjach, w których chcę go użyć. Nie mam zielonego pojęcia gdzie leży błąd i prosiłbym o pomoc.
Dziękuję z góry i pozdrawiam.