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
C++ Qt在无关对象之间传递变量_C++_Qt_Class_Variables_Object - Fatal编程技术网

C++ Qt在无关对象之间传递变量

C++ Qt在无关对象之间传递变量,c++,qt,class,variables,object,C++,Qt,Class,Variables,Object,我目前正在学习Qt,似乎遇到了一个问题。 在我的实践项目中,我有两个类:MainWindow和Dialog main window.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include "dialog.h" namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT

我目前正在学习Qt,似乎遇到了一个问题。 在我的实践项目中,我有两个类:MainWindow和Dialog

main window.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include "dialog.h"

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

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

private slots:
    void on_pushButtonDialog_clicked();

private:
    Ui::MainWindow *ui;
    Dialog *dialogInstance;

};

#endif // MAINWINDOW_H
#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>

namespace Ui {
class Dialog;
}

class Dialog : public QDialog
{
    Q_OBJECT

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

private:
    Ui::Dialog *ui;
};

#endif // DIALOG_H
Dialog.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include "dialog.h"

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

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

private slots:
    void on_pushButtonDialog_clicked();

private:
    Ui::MainWindow *ui;
    Dialog *dialogInstance;

};

#endif // MAINWINDOW_H
#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>

namespace Ui {
class Dialog;
}

class Dialog : public QDialog
{
    Q_OBJECT

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

private:
    Ui::Dialog *ui;
};

#endif // DIALOG_H
我的目标是使用对话框窗口输入一个值,然后在主窗口上显示该输入的值,我知道如何使用小部件在类中传递变量,但我不确定如何在不相关的对象之间传递变量

任何输入都会有很大帮助。

试试以下方法:

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    connect(ui->pushButtonDialog, SIGNAL(clicked()), this, SLOT(on_pushButtonDialog_clicked()));
    dialogInstance = new Dialog(this);
}
// ...
试试这个:

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    connect(ui->pushButtonDialog, SIGNAL(clicked()), this, SLOT(on_pushButtonDialog_clicked()));
    dialogInstance = new Dialog(this);
}
// ...

您可以将
信号
从一个类中的小部件连接到其他对象/其他对象的小部件中的
插槽
。。。您实际遇到的问题是什么?Dialog类是否必须有自己的MainWindow对象才能使用信号和插槽?否。
连接
对话框中的信号到
MainWindow中的
插槽
@user1502207您忘记将信号(单击)从按钮连接到相应插槽(
按按钮单击对话框
)。因此插槽永远不会被调用。避免使用表单设计器向GUI添加功能。@sorush-r嘿,感谢您的回复,我的问题是对话框没有主窗口对象。您可以将一个类中的小部件中的
信号连接到其他对象/其他对象的小部件中的
插槽
。您实际遇到的问题是什么y有?Dialog类是否必须有自己的MainWindow对象才能使用信号和插槽?否。
连接
对话框中的信号到
MainWindow中的
插槽
@user1502207您忘记将信号(单击)从按钮连接到相应插槽(
按按钮单击对话框
)。因此,永远不会调用插槽。避免使用表单设计器向GUI添加功能。@sorush-r嘿,谢谢你的回答,我的问题是对话框没有主窗口对象。这不是他的问题。他的问题是如何在对话框和主窗口之间解析veriables。在你的示例中,你根本没有解析变量,你可以仅将信号连接到插槽。答案是可以使用f.e.(最后一行)
QDialog*about=newqdialog(0,0);settingsUi.setupUi(about);settingsUi.spinBoxMin->setValue(absMin)简单地解析变量这不是他的问题。他的问题是如何在对话框和主窗口之间解析veriables。在您的示例中,您根本不解析变量,只将信号连接到插槽。答案是,可以使用f.e.(最后一行)
QDialog*about=new QDialog(0,0);settingsUi.setupUi解析变量(关于);settingsUi.spinBoxMin->setValue(absMin);