【问题标题】:Qt (C++) Pass Variable from Dialog to main.cppQt (C++) 将变量从对话框传递到 main.cpp
【发布时间】:2016-01-20 21:33:19
【问题描述】:

当我启动我的程序时,会弹出一个对话框窗口并要求我输入一个名称。一旦我输入了我的姓名并按下按钮,它就会关闭对话框并打开主窗口。

我的问题是如何将我刚刚在对话框中设置的变量/名称放入另一个类/我的 main.cpp

Main.cpp

#include "mainwindow.h"
#include <QApplication>
#include <QtDebug>
#include <QtNetwork>
#include <sstream>
#include "mydialog.h"

using namespace std;

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    // Open Dialog
    MyDialog mDialog;
    mDialog.setModal(true);
    mDialog.exec();

    //Open Main Window
    GW2::MainWindow w;
    w.show();    
    return a.exec();
}

mydialog.cpp

#include "mydialog.h"
#include "ui_mydialog.h"
#include <QDebug>

using namespace std;


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

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

void MyDialog::on_pushButton_clicked()
{
    QString MYNAME = ui->lineEdit->text();
    close();
}

我可以在此处获取 MYNAME,在我按下按钮后可以使用,但我需要传递变量...

mydialog.h

#ifndef MYDIALOG_H
#define MYDIALOG_H

#include <QDialog>
#include <QString>


namespace Ui {

class MyDialog;
}

class MyDialog : public QDialog
{
    Q_OBJECT

public:
    explicit MyDialog(QWidget *parent = 0);
    ~MyDialog();

private slots:
    void on_pushButton_clicked();


private:
    Ui::MyDialog *ui;
};

#endif // MYDIALOG_Hs

我尝试使用谷歌和搜索功能,但没有找到任何对我的项目有用的东西。希望您能够帮助我。干杯

【问题讨论】:

  • 您可以使您的my_name 变量成为 MyDialog 类的成员。根本不是一个糟糕的解决方案。

标签: c++ qt variables dialog


【解决方案1】:

将此添加到MyDialog

QString MyDialog::getName()
{
    return ui->lineEdit->text();
}

然后做:

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    // Open Dialog
    MyDialog mDialog;
    mDialog.setModal(true);
    mDialog.exec();

    // retrieve the name    
    QString name = mDialog.getName();

    //Open Main Window
    GW2::MainWindow w;
    w.show();    
    return a.exec();
}

请注意,该对话框可能会被取消。您应该从on_pushButton_clicked() 调用accept() 而不是close(),然后测试对话是否被接受:

if ( mDialog.exec() == QDialog::Accepted )
{
    QString name = mDialog.getName();
    ...

【讨论】:

  • 谢谢你成功了!过度思考了整个话题并做出了奇怪的东西,但现在它起作用了!谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多