Qt如何在其他cpp文件中控制MainWindow的控件

方法一

在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窗口:
在这里插入图片描述
点击插入:
在这里插入图片描述
点击删除:
在这里插入图片描述

方法二

参考这里:使用(MainWindow*)parentWidget()方法

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

只会git clone的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值