QT:как получить доступ с функции в mainwindow.cpp к переменим в main.cpp

Собственно вопрос в заголовке. Есть функция, которая исполняется при нажатии на кнопку. Как получить доступ к переменим которые в main.cpp?


Ответы (1 шт):

Автор решения: Sergey Tatarincev

Первый вопрос - а оно вам точно надо?

и ответ на вопрос - напрямую никак, но вы можете передать параметры из main.cpp при инициализации MainWindow. Вот маленький пример: main.cpp

#include "mainwindow.h"
#include <QApplication>
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);   
        QString param = QString(argv[0]); // пусть и бессмысленно, но будем передавать имя запускаемой программы.

        MainWindow w(param); // Инициализация (создание) MainWindow (см. конструктор MainWindow)
        w.show();

        return a.exec();
    }

MainWindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QMessageBox>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QString p, QWidget *parent = 0); // в нонструкторе добавился доп. параметр 
    ~MainWindow();

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

MainWindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QString p, QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QMessageBox::information(this,"",p); // в реализации конструктора мы получили переменную из main.cpp и можем использовать на свое усмотрение
    this->show();
}

MainWindow::~MainWindow()
{
    delete ui;
}
→ Ссылка