https://blog.csdn.net/ccc369639963/article/details/122665026
https://zhuanlan.zhihu.com/p/648165514
windows之间信号传递
在这个例子中,当MyWindow发送mySignal时,MainWindow的handleSignal槽函数会被调用,并接收到从MyWindow发送的值。
- 首先,定义你的信号和槽函数。在接收信号的窗口类中,你需要声明信号,并提供一个槽函数来处理信号。
// mywindow.h
#ifndef MYWINDOW_H
#define MYWINDOW_H
#include <QWidget>
class MyWindow : public QWidget {
Q_OBJECT
public:
explicit MyWindow(QWidget *parent = nullptr);
signals:
void mySignal(int value);
private:
// 触发信号的部分
};
#endif // MYWINDOW_H
- 然后,在你想要发送信号的地方,使用emit关键字发送信号。
// mywindow.cpp
#include "mywindow.h"
MyWindow::MyWindow(QWidget *parent) : QWidget(parent) {
// 构造函数的其他部分
// 当你想要发送信号时
emit mySignal(10); // 假设发送的值是10
}
- 在另一个窗口中,你需要声明你想要连接的信号,并提供一个槽函数来处理它。
// mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
class MainWindow : public QMainWindow {
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
public slots:
void handleSignal(int value);
};
#endif // MAINWINDOW_H
- 在cpp文件中实现槽函数。
// mainwindow.cpp
#include "mainwindow.h"
#include <QDebug>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent) {
// MainWindow的构造函数
}
MainWindow::~MainWindow() {
// MainWindow的析构函数
}
void MainWindow::handleSignal(int value) {
qDebug() << "Received signal with value:" << value;
// 处理信号的其他代码
}
- 最后,你需要连接这两个信号和槽函数。这通常在窗口的构造函数中完成。
// main.cpp
#include "mywindow.h"
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[]) {
QApplication a(argc, argv);
MyWindow myWindow;
MainWindow mainWindow;
// 连接信号和槽
QObject::connect(&myWindow, &MyWindow::mySignal, &mainWindow, &MainWindow::handleSignal);
myWindow.show();
mainWindow.show();
return a.exec();
}
0 条评论