es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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;
}

Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, se puede acceder al método parseTextFile, pero estás obteniendo un error en QMessageBox porque no estás pasando un puntero válido de QWidget al constructor de QMessageBox. Necesitas pasar un puntero válido de QWidget al constructor de QMessageBox para poder mostrar el cuadro de mensaje.

    Puedes añadir un puntero de QWidget al constructor de parseTextFile y luego pasarlo al constructor de QMessageBox. Por ejemplo:

    // parseTextFile.h
    class parseFile
    {
    public:
    parseFile(QWidget *parent =0);
    ~parseFile();

    int parseTextFile(QWidget *parent);
    

    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;
    }

Comments are closed.