In my Windows forms code, ui is used to define graphical element by default. But I want to modify them in a function, like this:
The problems is that the debug tool tells me that ui is not declared in this scope.
#include <QMessageBox>
#include <QFile>
#include <QTextStream>
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "datawindow.h"
void getData(ui){
QFile inputFile("C:\\pepoles.txt");
if (inputFile.open(QIODevice::ReadOnly)){
QTextStream in(&inputFile);
while ( !in.atEnd() ){
QString line = in.readLine();
ui->listWidgetData->addItem(line);
}
}
else{
QMessageBox::critical(this, "Erreur", "Une erreur s'est produite :(");
}
inputFile.close();
}
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
getData(ui);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_actionNouvellesDonnees_triggered() {
w.show();
}
Make
getData()
a member of MainWindow:Then, in your constructor:
I recommend this approach since
ui
contains private members, so it's best to have a member function modify it.Don't forget to declare
getData()
in the header file of your MainWindow class. You should probably make it private.And btw,
ui
is not an array. It's an object pointer.That line starts definition of
getData
function, which takes one variable, with typeui
and no name (so it can't be accessed in the function code).Add type...