Как увидеть передаваемую переменную из одной формы в другую в описанной функции?
Есть несколько классов. В одном из классов объявлена функция, в которой ведётся обработка данных и возвращает результат:
QStringList MainWindow::Output()
{
QStringList result;
выполнение функции...;
return result;
}
Далее в этом же классе вызывается вторая форма:
void MainWindow::on_action_triggered()
{
...
table window(Output());
...
}
и на вторую форму передаётся переменная с результатом обработки функции Output.
На второй форме: h:
...
public:
explicit table(QStringList result, QWidget *parent = nullptr);
~table();
...
cpp:
...
table::table(QStringList result, QWidget *parent) :
QDialog(parent),
ui(new Ui::table)
{
ui->setupUi(this);
...
}
И вот проблема, получается, что на второй форме (.cpp) я могу работать с переменной result только в конструкторе.
Подскажите, пожалуйста, как можно работать с данной переменной по всей области исходника, например, объявить функцию и указать там эту переменную.
Спасибо.
Ответы (2 шт):
Главное правило работы с формами в Qt - создавать их динамически.
Второе правило работы с Qt - использовать сигналы и слоты для обмена данными между формами.
Работать это может как-то так:
class FormAlpha
{
signals:
void doFormBeta(const QString& data1,const QString& data2,const QString& data3);
};
FormAlpha::actionWonder()
{
doFormBeta("pip", "pop", "bop");
}
class FormBeta
{
public slots:
void proceedFormBeta(const QString& data1,const QString& data2,const QString& data3)
{
//do all business
}
};
Обе формы создать динамически, соединить их сигнал и слот - и получится аккуратно.
auto alpha = new FormAlpha();
auto beta = new FormBeta();
connect(alpha, SIGNAL(doFormBeta(тут параметры)), beta, SLOT(processFormBeta(тут параметры)));
Код очень условный (без IDE писать на Qt, как оказалось, тяжеловато), но надеюсь, идею вы извлечете.
В заголовке (.h) создать ещё одну переменную в области private:, например: QStringList data;, и в конструкторе (.cpp), в теле указать data=result;.
Теперь переменную data можно увидеть по всей области класса.