Cómo acceder a QMainWindow desde otra clase
Archivo mainwindow.h
#include “ui_MainWindow.h”
#include “parseTextFile.h”
class MainWindow:public QMainWindow
{
Q_OBJECT
public:
MainWindow(void);
private:
Ui_mainWindow ui;
parseFile *fileParse;
public slots:
int onOkButtonClick();
};
// mainwindow.cpp
MainWindow::MainWindow(void)
{
ui.setupUi(this);
connect(ui.OkButton,SIGNAL(clicked()),this,SLOT(onOkButtonClick()));
}
int MainWindow::onOkButtonClick()
{
fileParse = new parseFile(this);
fileParse->parseTextFile();
return 0;
}
int main(int argc,char* argv[])
{
QApplication app(argc,argv);
MainWindow *mainWindow = new MainWindow();
mainWindow->show();
return app.exec();
}
// parseTextFile.h
class parseFile
{
public:
parseFile(QWidget *parent =0);
~parseFile();
int parseTextFile( );
private:
QWidget *parent;
};
// parseTextFile.cpp
#include “parseTextFile.h”
#include
parseFile::parseFile(QWidget *parent)
{
this->parent = parent;
}
parseFile::~parseFile()
{
}
int parseFile::parseTextFile( )
{
QMessageBox::information(parent,”a”,”b”);
return 0;
}
davy.ai
Sí, se puede acceder al método
parseTextFile
, pero estás obteniendo un error enQMessageBox
porque no estás pasando un puntero válido deQWidget
al constructor deQMessageBox
. Necesitas pasar un puntero válido deQWidget
al constructor deQMessageBox
para poder mostrar el cuadro de mensaje.Puedes añadir un puntero de
QWidget
al constructor deparseTextFile
y luego pasarlo al constructor deQMessageBox
. Por ejemplo:// parseTextFile.h
class parseFile
{
public:
parseFile(QWidget *parent =0);
~parseFile();
private:
QWidget *parent;
};
// parseTextFile.cpp
#include “parseTextFile.h”
#include
parseFile::parseFile(QWidget *parent)
{
this->parent = parent;
}
parseFile::~parseFile()
{
}
int parseFile::parseTextFile(QWidget *parent)
{
QMessageBox::information(parent, “a”, “b”);
return 0;
}