QT主窗口有个按钮和标签,点击按钮会弹出一个子窗口,子窗口有个按钮个行编辑器,在行编辑器输入字符串,点击按钮会关闭子窗口并且收集行编辑器中的字符串显示在主窗口的标签中
时间: 2024-02-28 16:55:39 浏览: 122
qt--主窗口中按钮弹出子窗口,并把主窗口信号发送给子窗口
5星 · 资源好评率100%
好的,下面是实现这个功能的代码示例:
主窗口的代码:
```cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "subwindow.h"
#include <QString>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(ui->pushButton, &QPushButton::clicked, this, &MainWindow::openSubWindow);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::openSubWindow()
{
SubWindow *subWindow = new SubWindow(this);
subWindow->show();
}
void MainWindow::setText(QString text)
{
ui->label->setText(text);
}
```
子窗口的代码:
```cpp
#include "subwindow.h"
#include "ui_subwindow.h"
#include "mainwindow.h"
SubWindow::SubWindow(QWidget *parent) :
QDialog(parent),
ui(new Ui::SubWindow)
{
ui->setupUi(this);
connect(ui->pushButton, &QPushButton::clicked, this, &SubWindow::collectText);
}
SubWindow::~SubWindow()
{
delete ui;
}
void SubWindow::collectText()
{
QString text = ui->lineEdit->text();
MainWindow *mainWindow = qobject_cast<MainWindow*>(parent());
if(mainWindow)
{
mainWindow->setText(text);
}
close();
}
```
在主窗口的构造函数中,我们连接了主窗口的按钮点击事件到 `openSubWindow` 槽函数上。在 `openSubWindow` 槽函数中,我们创建了一个子窗口并显示它。
在子窗口的构造函数中,我们连接了子窗口的按钮点击事件到 `collectText` 槽函数上。在 `collectText` 槽函数中,我们获取了行编辑器中的字符串并将它传递给主窗口的 `setText` 函数来设置标签的文本。最后,我们关闭子窗口。
希望这个示例能够帮到你!
阅读全文