栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

Qt:多窗口传递参数

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Qt:多窗口传递参数

这里写目录标题
    • 方法1:信号和槽
    • 方法2:全局变量

方法1:信号和槽
  1. B窗口.h定义signals,cpp中适当位置emit该signal
  2. 窗口A接受窗口B信号,在A中建立信号和槽。类B的signal触发A的槽

mainwindow.h

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    void receiveMsg(QString);
    void openSubWin();

private:
    Ui::MainWindow *ui;
};

mainwindow.cpp 接受其它窗口的信号,借助信号和槽机制。其它类的signal触发相应窗口的槽

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    // SubWindow *subwindow = new SubWindow(this);
    // connect(subWindow, SIGNAL(sendText(QString)), this, SLOT(receiveMsg(QString))); 
    // 之前connect一直写在这里不好使,应为这个subwindow和下面show的subwindow不是一个实例,
    // 如果要在这里接受,需要在这里 subWindow->show
    connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(openSubWin()));
}

void MainWindow::receiveMsg(QString str)
{
    ui->label->setText(str);
}

void MainWindow::openSubWin() {
    SubWindow *subWindow = new SubWindow;
    connect(subWindow, SIGNAL(sendText(QString)), this, SLOT(receiveMsg(QString)));
    subWindow->show();
}

MainWindow::~MainWindow()
{
    delete ui;
}

subwindow.h 在发出信号类的.h定义signals,cpp中适当位置emit该signal

class SubWindow : public QDialog
{
    Q_OBJECT

public:
    explicit SubWindow(QWidget *parent = nullptr);
    ~SubWindow();

private slots:
    void onBtnClick();

private:
    Ui::SubWindow *ui;
signals: 
    void sendText(QString);
};

subwindow.cpp

SubWindow::SubWindow(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::SubWindow)
{
    ui->setupUi(this);
    connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(onBtnClick()));
}

void SubWindow::onBtnClick()
{
    emit sendText("hello qt");
}

SubWindow::~SubWindow()
{
    delete ui;
}
方法2:全局变量

文件A在函数外

int a = 10;

文件B在使用前:

extern int a

这种方法不需要包含头文件

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/630232.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号