C++ Qt在无关对象之间传递变量
我目前正在学习Qt,似乎遇到了一个问题。 在我的实践项目中,我有两个类:MainWindow和Dialog main window.hC++ 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
#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);