Я новичок в Qt и в настоящее время работаю над одним QTabWidget, который имеет две вкладки, означает два виджета, как таковые
tabWidget->addTab(new First_Widget(),tr("Home"));
tabWidget->addTab(new Second_Widget(), tr("Download"));
Первый виджет имеет несколько целых чисел и значений с плавающей запятой, которые я хочу использовать во втором виджете. Я могу сделать конструктор второго виджета, как это
tabWidget->addTab(new Second_Widget(argument1, argument2,argument3), tr("Download"));
и я думаю, что я могу вызвать вторую вкладку из первого виджета, но в этом случае вторая вкладка будет скрыта, пока я не нажму соответствующую кнопку. Может кто-нибудь сказать мне, как я могу использовать значения первой вкладки во второй.
Вы можете поддерживать переменные на уровне вызова tabWidget. и передать переменные по ссылке на обе вкладки.
Я предлагаю вам использовать механизм emit-connect.
First_Widget
испускает сигналы, когда это целые числа и числа с плавающей точкой изменяются и Second_Widget
соединяет эти сигналы с соответствующими слотами.
Second_Widget
нужно только знать и интерфейс, который вы можете передать в качестве параметра конструктора:
// demo code, not tested
class IEmmiter
{
Q_OBJECT
signal:
void Integer1Changed(int new_value);
.....
};
class First_Widget : public IEmmiter
{
};
class Second_Widget
{
Second_Widget(const IEmmiter & emmiter)
{
connect(&emmiter, SIGNAL(Integer1Changed(int)), this, SLOT(Integer1Changed(int)));
....
}
};
// on your programm
auto fw = First_Widget();
auto sw = Second_Widget(*fw);
tabWidget->addTab(fw, tr("Home"));
tabWidget->addTab(sw, tr("Download"));