用QT写一个父窗口向子窗口之间传值
时间: 2023-07-19 10:14:34 浏览: 141
QTwindow_qtaddwindow_QT编程_QT_子窗口_
好的,下面是一个简单的示例代码,演示了如何在父窗口和子窗口之间传递值:
父窗口(MainWindow)的代码:
```cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "childwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
// 创建子窗口对象
childWindow = new ChildWindow(this);
// 连接子窗口的信号和槽函数
connect(childWindow, SIGNAL(sendData(QString)), this, SLOT(receiveData(QString)));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
// 获取用户输入的字符串
QString str = ui->lineEdit->text();
// 将字符串传递给子窗口
childWindow->setData(str);
// 显示子窗口
childWindow->show();
}
void MainWindow::receiveData(QString str)
{
// 在主窗口中显示接收到的数据
ui->label->setText(str);
}
```
子窗口(ChildWindow)的代码:
```cpp
#include "childwindow.h"
#include "ui_childwindow.h"
ChildWindow::ChildWindow(QWidget *parent) :
QDialog(parent),
ui(new Ui::ChildWindow)
{
ui->setupUi(this);
}
ChildWindow::~ChildWindow()
{
delete ui;
}
void ChildWindow::setData(QString data)
{
// 将数据保存起来
m_data = data;
}
void ChildWindow::on_pushButton_clicked()
{
// 发送信号,将数据传递给主窗口
emit sendData(m_data);
// 关闭子窗口
close();
}
```
在上述代码中,我们创建了一个子窗口(ChildWindow),并在主窗口(MainWindow)中创建了一个子窗口对象(childWindow)。当用户在主窗口中点击按钮时,我们通过 `childWindow->setData(str)` 将用户输入的字符串传递给子窗口。然后,我们显示子窗口,并等待用户点击子窗口中的按钮。当用户点击子窗口中的按钮时,我们调用 `emit sendData(m_data)` 发送信号,将数据传递回主窗口。主窗口收到数据后,会调用 `receiveData(QString str)` 函数,在主窗口中显示接收到的数据。
当然,这只是一个简单的示例代码,实际上在实际开发中,你可能需要更多的逻辑来处理数据的传递和处理。
阅读全文