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

Qt如何在其他cpp文件中控制MainWindow的控件_qt 控件控制另外一个cpp文件窗口_只会git clone的程序员的博客-CSDN博客

关于Qt 两个.cpp文件相互调用各自的函数_qt中调用另一个cpp中的函数_惜双若雅的博客-CSDN博客

QT常见类型转换_qt uint_飞同学的博客-CSDN博客

QT中常见QByteArray,QString,char,10进制,16进制之间转换_qbytearray转10进制_Nina_小哥的博客-CSDN博客

「QT(C++)开发工程师」_Qt5 界面开发工程师课程,嵌入式Linux开发工程师课程,C++软件工程师课程-CSDN博客

qt中qstring合并字符串
https://www.yii666.com/blog/361427.html

QT 关于QString的格式化(补零/进制转换)_qstring 格式化_致守的博客-CSDN博客

Qt开发高级进阶:QString格式化输出double数值_qstring double_高精度计算机视觉的博客-CSDN博客

QString类—number_qstring::number_Acuity.的博客-CSDN博客

qt 中lineEdit->setText()输出double - 开发者博客
https://tool.4xseo.com/a/56309.html

Qt:把QString转换为 double类型_qstring转double问题_xxgxgx的博客-CSDN博客

Qt/C++编写地图综合应用59-经纬度坐标纠偏_feiyangqingyun的博客-CSDN博客

方法一
在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窗口:

点击插入:

点击删除:

猜你喜欢

转载自blog.csdn.net/m0_37777700/article/details/132457826
今日推荐