用QT写一个子窗口和子窗口之间传值的代码
时间: 2023-07-19 08:14:30 浏览: 91
QT两个窗口传值
3星 · 编辑精心推荐
以下是一个使用QT编写的子窗口和父窗口之间传值的示例代码:
子窗口的头文件:
```cpp
#ifndef CHILDWINDOW_H
#define CHILDWINDOW_H
#include <QWidget>
namespace Ui {
class ChildWindow;
}
class ChildWindow : public QWidget
{
Q_OBJECT
public:
explicit ChildWindow(QWidget *parent = nullptr);
~ChildWindow();
signals:
void sendValue(int value); // 定义一个信号,用于向父窗口发送值
private slots:
void on_sendButton_clicked();
private:
Ui::ChildWindow *ui;
};
#endif // CHILDWINDOW_H
```
子窗口的源文件:
```cpp
#include "childwindow.h"
#include "ui_childwindow.h"
ChildWindow::ChildWindow(QWidget *parent) :
QWidget(parent),
ui(new Ui::ChildWindow)
{
ui->setupUi(this);
}
ChildWindow::~ChildWindow()
{
delete ui;
}
void ChildWindow::on_sendButton_clicked()
{
int value = ui->inputEdit->text().toInt(); // 获取输入框中的值
emit sendValue(value); // 发送信号,并传递值
}
```
父窗口的头文件:
```cpp
#ifndef PARENTWINDOW_H
#define PARENTWINDOW_H
#include <QWidget>
namespace Ui {
class ParentWindow;
}
class ParentWindow : public QWidget
{
Q_OBJECT
public:
explicit ParentWindow(QWidget *parent = nullptr);
~ParentWindow();
private slots:
void on_childButton_clicked();
void on_childWindow_sendValue(int value); // 接收子窗口发送的值的槽函数
private:
Ui::ParentWindow *ui;
};
#endif // PARENTWINDOW_H
```
父窗口的源文件:
```cpp
#include "parentwindow.h"
#include "ui_parentwindow.h"
#include "childwindow.h"
ParentWindow::ParentWindow(QWidget *parent) :
QWidget(parent),
ui(new Ui::ParentWindow)
{
ui->setupUi(this);
}
ParentWindow::~ParentWindow()
{
delete ui;
}
void ParentWindow::on_childButton_clicked()
{
ChildWindow *childWindow = new ChildWindow(this); // 创建子窗口
connect(childWindow, SIGNAL(sendValue(int)), this, SLOT(on_childWindow_sendValue(int))); // 连接子窗口的信号和父窗口的槽函数
childWindow->show(); // 显示子窗口
}
void ParentWindow::on_childWindow_sendValue(int value)
{
ui->resultLabel->setText(QString::number(value)); // 在父窗口中显示子窗口传递过来的值
}
```
这个示例中,子窗口有一个输入框和一个按钮,当点击按钮时,会将输入框中的值发送给父窗口。父窗口中有一个按钮,当点击按钮时,会创建并显示子窗口,并连接子窗口的信号和父窗口的槽函数。当子窗口发送信号时,父窗口会接收到信号,并在标签中显示子窗口传递过来的值。
阅读全文