Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过按下第三个窗口中的按钮将QString从一个窗口转到另一个窗口 新的C++和QT作为研究项目(生物学)的一部分,一直在与一些简单的东西进行斗争。我真的很感激有人的帮助_C++_Qt_Getter Setter_Qlineedit - Fatal编程技术网

如何通过按下第三个窗口中的按钮将QString从一个窗口转到另一个窗口 新的C++和QT作为研究项目(生物学)的一部分,一直在与一些简单的东西进行斗争。我真的很感激有人的帮助

如何通过按下第三个窗口中的按钮将QString从一个窗口转到另一个窗口 新的C++和QT作为研究项目(生物学)的一部分,一直在与一些简单的东西进行斗争。我真的很感激有人的帮助,c++,qt,getter-setter,qlineedit,C++,Qt,Getter Setter,Qlineedit,我正在为一个预先存在的程序使用GUI,我正在尝试将QString变量从一个窗口(inputform)的QLineEdit传输到第二个窗口(output form)的QLineEdit 我遇到的问题是,当我单击第三个窗口(filedialog)上的按钮时,我需要显示输出表单,并预先填充它的LineEdit 问题: 启动-->时会出现两个窗口:文件对话框和inputform 用户将数据输入inputform的QLineEdit 用户按下文件对话框窗口上的“传输按钮” 按下按钮时,将显示-->out

我正在为一个预先存在的程序使用GUI,我正在尝试将QString变量从一个窗口(inputform)的QLineEdit传输到第二个窗口(output form)的QLineEdit

我遇到的问题是,当我单击第三个窗口(filedialog)上的按钮时,我需要显示输出表单,并预先填充它的LineEdit

问题:

  • 启动-->时会出现两个窗口:文件对话框和inputform
  • 用户将数据输入inputform的QLineEdit
  • 用户按下文件对话框窗口上的“传输按钮”
  • 按下按钮时,将显示-->outputform,其中预填充了用户数据(来自inputform)的QLineEdit
我假设问题在于getter/setter类型,我的变量可能超出了范围,但我尝试了以下许多类似的示例,但无法使其工作

提前谢谢

这是我的密码:

Main.cpp

#include "filedialog.h"
#include "inputform.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    FileDialog w;
    InputForm w2;
    w.show();
    w2.show();


    return a.exec();
}
inputform.h

#ifndef INPUTFORM_H
#define INPUTFORM_H

#include <QWidget>

namespace Ui {
class InputForm;
}

class InputForm : public QWidget
{
    Q_OBJECT

public:
    explicit InputForm(QWidget *parent = nullptr);
    ~InputForm();
    Ui::InputForm *ui;

};

#endif // INPUTFORM_H
outputform.h

#ifndef OUTPUTFORM_H
#define OUTPUTFORM_H

#include <QWidget>

namespace Ui {
class OutPutForm;
}

class OutPutForm : public QWidget
{
    Q_OBJECT

public:
    explicit OutPutForm(QWidget *parent = nullptr);
    ~OutPutForm();
    Ui::OutPutForm *ui;

};

#endif // OUTPUTFORM_H

谢谢你的简短指示

玩了一会儿之后:

设置主窗口(或在我的情况下为主对话框窗口)。生成inputform实例,将按钮连接到inputform

FileDialog::FileDialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::FileDialog)
{
    ui->setupUi(this);

    InputForm *inputForm = new InputForm;
    connect(ui->transferButton,SIGNAL(clicked()),inputForm,SLOT(getLineEditTextFunc()));
    inputForm->show();
}

FileDialog::~FileDialog()
{
    delete ui;
}

void FileDialog::on_transferButton_clicked()
{

}
然后从输入表单:

定义一个函数以获取输入表单的LineEdit文本(文件名);然后还生成一个输出表单,并用fileName变量填充它的LineEdit

InputForm::InputForm(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::InputForm)
{
    ui->setupUi(this);
}

InputForm::~InputForm()
{
    delete ui;
}

void InputForm::getLineEditTextFunc()
{
    fileName = this->ui->inputLineEdit->text();
    OutPutForm *outputform = new OutPutForm;
    outputform->ui->outputLineEdit->setText(fileName);
    outputform->show();
}

信号和插槽
#ifndef OUTPUTFORM_H
#define OUTPUTFORM_H

#include <QWidget>

namespace Ui {
class OutPutForm;
}

class OutPutForm : public QWidget
{
    Q_OBJECT

public:
    explicit OutPutForm(QWidget *parent = nullptr);
    ~OutPutForm();
    Ui::OutPutForm *ui;

};

#endif // OUTPUTFORM_H
#include "outputform.h"
#include "ui_outputform.h"

OutPutForm::OutPutForm(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::OutPutForm)
{
    ui->setupUi(this);
}

OutPutForm::~OutPutForm()
{
    delete ui;
}
FileDialog::FileDialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::FileDialog)
{
    ui->setupUi(this);

    InputForm *inputForm = new InputForm;
    connect(ui->transferButton,SIGNAL(clicked()),inputForm,SLOT(getLineEditTextFunc()));
    inputForm->show();
}

FileDialog::~FileDialog()
{
    delete ui;
}

void FileDialog::on_transferButton_clicked()
{

}
InputForm::InputForm(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::InputForm)
{
    ui->setupUi(this);
}

InputForm::~InputForm()
{
    delete ui;
}

void InputForm::getLineEditTextFunc()
{
    fileName = this->ui->inputLineEdit->text();
    OutPutForm *outputform = new OutPutForm;
    outputform->ui->outputLineEdit->setText(fileName);
    outputform->show();
}