Отправить значение или строку из main.cpp в mainwindow.cpp - PullRequest
0 голосов
/ 27 октября 2019

Мне нужна помощь для отправки значения из main.cpp в mainwindow.cpp перед открытием окна.

Более или менее, процесс должен быть таким:

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;

    // some code here where I control parameters

    // Here I have some values and/or strings to send to MainWindow

    w.show();
    return a.exec();
}

Сейчаскак я могу отправить их? Я не хочу создавать файл, в который помещаются эти значения.

Заранее спасибо за помощь

Редактировать 1

Я немного запутался:

Я пытаюсь с последним ответом решить проблему, но думаю, что чего-то не хватает. Вот код (это пример, чтобы увидеть, работает ли отправка данных):

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    MainWindow(QString variable);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

mainwindow.cpp

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


MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    ui->label->setText(variable); //"variable" is not declared. Here I think is the error
}

MainWindow::~MainWindow()
{
    delete ui;
}

main.cpp

#include "mainwindow.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w("Hello"); //undefined reference to MainWindow::MainWindow(QString)
    w.show();
    return a.exec();
}

Ответы [ 2 ]

2 голосов
/ 27 октября 2019

Вы можете реализовать общедоступные функции установки для своего главного окна и вызывать их из вашего main.cpp

Допустим, вы хотите иметь доступ к строке заголовка и количеству кнопок, вы можете реализовать эти функции в своемКласс MainWindow:

public:
    void SetTitle(const QString& p_title);
    void SetNumberOfButtons(int p_num);
0 голосов
/ 27 октября 2019

——- Edit3 ——-

Вы можете попробовать это:

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QString variable, QWidget *parent = nullptr);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

mainwindow.cpp

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

MainWindow::MainWindow(QString variable, QWidget *parent)
    : QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    ui->label->setText(variable);
}

MainWindow::~MainWindow()
{
    delete ui;
}

main.cpp

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w("Hello");
    w.show();
    return a.exec();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...