如何在qt中从文本框中访问另一个对话框/表单中的值?

时间:2016-02-20 07:27:37

标签: c++ qt textbox qt-creator multiplication

我正在尝试完成这个乘法,因为它计算出我需要的值。

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 个答案:

答案 0 :(得分:0)

如果你的第二个表格是QDialog,那么完成它的最简单方法就是使用一种方法,就像这两种形式之间的桥梁一样。

在对话框类(第二种形式)中添加如下方法:

QString MyDialog::getTextboxText(){
    return ui->mytextbox->text();
}

在你的第一堂课中,无论何时你想计算乘法,你都会做这样的事情:

int n1 = myDialog.getTextboxText().toInt();
int n2 = 4;
labelForcePS.setText(QString::number(n1 * n2));

编辑#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指的是类本身,但是您应该在此类的实例上调用此方法。只能在类名本身上调用 static 方法,而不是常规方法。

顺便说一下,作为惯例,你的类名应该以大写字母而不是小写字母开头。即Profiles而非profiles