Как мне получить доступ к значениям из текстового поля другого диалогового окна / формы в qt?
Я пытаюсь завершить это умножение, так как оно вычисляет нужное мне значение.
int n1 = textboxWeight.text().toInt();
int n2 = 4;
labelForcePS.setText(QString::number(n1 * n2));
К сожалению, 'textboxWeight' находится в другом диалоговом окне / форме, чем мой labelForcePS. Я хотел бы, чтобы метка равнялась любому значению, введенному в текстовом поле * 4. Я изо всех сил пытаюсь получить доступ к значению из textboxWeight, поскольку оно не в той же форме, что и метка. Я пытался экспериментировать с сигналами и слотами, но без особой удачи! Я новый:/
Ребята, знаете ли вы, как завершить умножение при доступе к значению из другого диалогового окна / формы?
Любая помощь будет оценена, спасибо.
РЕДАКТИРОВАТЬ:
Это мой код для формы, где я хочу, чтобы умножение происходило:
#include "analytics.h"
#include "ui_analytics.h"
#include "ui_profiles.h"
#include "profiles.h"
#include "mainwindow.h"
analytics::analytics(QWidget *parent) :
QWidget(parent),
ui(new Ui::analytics)
{
ui->setupUi(this);
}
analytics::~analytics()
{
delete ui;
}
void analytics::on_calculatebtn_clicked()
{
int n1 = Ui::profiles.getTextboxText().toInt();
int n2 = 4;
ui->labelForcePS->setText(QString::number(n1 * n2));
}
QString profiles::getTextboxText(){
return ui->textboxWeight->text();
}
Это код формы, в которой находится textboxWeight:
#include "ui_profiles.h"
#include <QComboBox>
profiles::profiles(QWidget *parent) :
QWidget(parent),
ui(new Ui::profiles)
{
ui->setupUi(this);
}
profiles::~profiles()
{
delete ui;
}
1 ответ
Если ваша вторая форма QDialog
Самый простой способ сделать это - использовать метод, который действует как мост между этими двумя формами.
В вашем диалоговом классе (вторая форма) добавьте такой метод:
QString MyDialog::getTextboxText(){
return ui->mytextbox->text();
}
И в вашем первом классе, когда вы хотите вычислить умножение, вы делаете что-то вроде этого:
int n1 = myDialog.getTextboxText().toInt();
int n2 = 4;
labelForcePS.setText(QString::number(n1 * n2));
Edit # 1: кажется, что profiles
класс действует как диалог, даже если это не подкласс QDialog
, Обратите внимание, что лучше продлить QDialog
не QWidget
создать индивидуальный диалог. QDialog
внутренне наследуют QWidget
класс, хотя.
Хорошо, давайте вернемся к вашему вопросу. Вы должны добавить этот метод интерфейса к вашему profiles
учебный класс. Как это:
profiles.cpp:
QString profiles::getTextboxText(){ return ui->mytextbox->text(); }
profiles.h: (где-то в публичной зоне
profiles
учебный класс)QString getTextboxText();
Вторая проблема здесь on_calculatebtn_clicked
метод. Ui::profiles
ссылается на сам класс, но вы должны вызывать этот метод для экземпляра этого класса. Для самого имени класса можно вызывать только статические методы, а не обычные методы.
Кстати, как правило, имена ваших классов должны начинаться с заглавной, а не строчной буквы. т.е. Profiles
не profiles
,