Как мне получить доступ к значениям из текстового поля другого диалогового окна / формы в 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,

Другие вопросы по тегам