方法一
在MainWindow类中添加一个公有的该类的指针类型静态成员变量,别的文件通过该指针来操控MainWindow中的控件。
说明:
下面演示从mainWindow按一个按钮创建listForm界面,然后通过listForm界面的一个插入,一个删除按钮来控制mainWindow窗口的编辑框。
mainWindow.h文件如下:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <listform.h>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
public:
static MainWindow *mutualUi;//!!!!!!!!!指针类型静态成员变量
void setLinetext(QString s);
private slots:
void on_pushButton_clicked();
};
#endif // MAINWINDOW_H
static MainWindow *mutualUi;//!!!指针类型静态成员变量
为什么要静态参考这里,c++的static详解
mainWindow.cpp文件如下:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "qdebug.h"
MainWindow *MainWindow::mutualUi = nullptr;//!!!!初始化,非常重要
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
mutualUi = this;//!!!赋值,非常重要
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::setLinetext(QString s)
{
ui->lineEdit->setText(s);
}
void MainWindow::on_pushButton_clicked()
{
listForm *l;
l = new listForm();
l->show();
}
MainWindow *MainWindow::mutualUi = nullptr;//!!!!初始化,非常重要
mutualUi = this;//!!!赋值,非常重要
listForm.cpp文件
#include "listform.h"
#include "ui_listform.h"
#include "mainwindow.h"
listForm::listForm(QWidget *parent) :
QWidget(parent),
ui(new Ui::listForm)
{
ui->setupUi(this);
}
listForm::~listForm()
{
delete ui;
}
void listForm::on_pushButton_clicked()
{
MainWindow::mutualUi->setLinetext("1111");//通过mainwindow的指针设置文本
}
void listForm::on_pushButton_2_clicked()
{
MainWindow::mutualUi->setLinetext("");//通过mainwindow的指针设置文本
}
MainWindow::mutualUi->setLinetext(“1111”);//通过mainwindow的指针设置文本
listForm.h文件:
#ifndef LISTFORM_H
#define LISTFORM_H
#include <QWidget>
namespace Ui {
class listForm;
}
class listForm : public QWidget
{
Q_OBJECT
public:
explicit listForm(QWidget *parent = 0);
~listForm();
private slots:
void on_pushButton_clicked();
void on_pushButton_2_clicked();
private:
Ui::listForm *ui;
};
#endif // LISTFORM_H
效果展示:
运行:
创建listForm窗口:
点击插入:
点击删除: