Qt は他の cpp ファイルの MainWindow の制御をどのように制御しますか

Qt はどのようにして他の cpp ファイルの MainWindow コントロールを制御しますか_qt コントロールは別の cpp ファイルのウィンドウを制御します_git clone しか知らないプログラマーのブログ - CSDN ブログ

Qt について 2 つの .cpp ファイルが互いの関数を呼び出す_Qt が別の cpp の関数を呼び出す_Xi Shuang Ruoya のブログ - CSDN ブログ

QT 共通型変換_qt uint_Fei クラスメートのブログ - CSDN ブログ

QByteArray、QString、char、10 進数、16 進数間の変換は、QT_qbytearray から 10 進数_Nina_小哥的博客-CSDN 博客で一般的です。

「QT(C++)開発エンジニア」_Qt5インターフェース開発エンジニアコース、組み込みLinux開発エンジニアコース、C++ソフトウェアエンジニアコース - CSDNブログ

qstring qt の文字列をマージ
https://www.yii666.com/blog/361427.html

QString の QT フォーマット (ゼロ パディング/16 進変換)_qstring フォーマット_Zhishou ブログ-CSDN ブログ

高度な Qt 開発: QString 形式の出力 double value_qstring double_高精度コンピューター ビジョン ブログ - CSDN ブログ

QString クラス—number_qstring::number_Acuity.のブログ - CSDN ブログ

qt の LineEdit->setText() が double を出力する - 開発者ブログ
https://tool.4xseo.com/a/56309.html

Qt: QString を double type_qstring から double に変換する issue_xxgxgx のブログ-CSDN ブログ

Qt/C++ コンパイル マップ総合アプリケーション 59 - 経度と緯度の座標修正_feiyangqingyun のブログ - CSDN ブログ

方法 1
このクラスのパブリック ポインター型静的メンバー変数を 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");//メインウィンドウのポインタを介してテキスト 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