主窗口向子窗口传值的过程中,由于子窗口里的控件是其私有成员,所以主窗口不能直接访问。解决的方法是在子窗口中定义一个公有函数,通过调用此函数实现私有成员的访问。话不多说,看实现过程:
1.通过Qt Designer设计主窗口与子窗口
主窗口MainWindow包含一个按钮pushButton和一个文本编辑lineEdit
子窗口SubWidge包含一个标签label
2.程序:
mainwindow.h
#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>#include <QPushButton>namespace Ui {class MainWindow;}class MainWindow : public QMainWindow{Q_OBJECTpublic:explicit MainWindow(QWidget *parent = nullptr);~MainWindow();private:Ui::MainWindow *ui;private slots :void buttonEvent();//点击按钮的槽函数};#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"#include "ui_mainwindow.h"#include "subwidge.h"MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow){ui->setupUi(this);//连接信号与槽connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(buttonEvent()));}MainWindow::~MainWindow(){delete ui;}//点击按钮的槽函数,生成子窗口,并显示信息void MainWindow::buttonEvent(){//生成子窗口SubWidge *subw = new SubWidge();subw->show();//将主窗口的文本信息,传进子窗口subw->setText(ui->lineEdit->text());}
subwidge.h
#ifndef SUBWIDGE_H#define SUBWIDGE_H#include <QWidget>namespace Ui {class SubWidge;}class SubWidge : public QWidget{Q_OBJECTpublic:explicit SubWidge(QWidget *parent = nullptr);~SubWidge();void setText(QString str);private:Ui::SubWidge *ui;};#endif // SUBWIDGE_H
subwidge.cpp
#include "subwidge.h"#include "ui_subwidge.h"SubWidge::SubWidge(QWidget *parent) :QWidget(parent),ui(new Ui::SubWidge){ui->setupUi(this);}SubWidge::~SubWidge(){delete ui;}void SubWidge::setText(QString str){ui->label->setText(str);}
3.程序运行结果:
主窗口输入一条文本后,点击按钮
子窗口弹出,label上显示该文本信息
如果觉得《Qt主窗口向子窗口传值》对你有帮助,请点赞、收藏,并留下你的观点哦!