用Qt实现点击A界面的pushbutton按钮弹出B窗口,在B窗口点击B窗口的pushbutton后在A界面textedit中显示数字
时间: 2024-04-29 13:24:32 浏览: 135
这里提供一种实现思路:
1. 在Qt Creator中创建一个工程,包含两个窗口A和B,分别用QWidget和QDialog实现。
2. 在窗口A中添加一个QPushButton按钮,命名为btn_openB,用于打开窗口B。
3. 在窗口B中添加一个QPushButton按钮,命名为btn_addNum,用于在窗口A的textEdit中显示数字。
4. 在窗口A的槽函数中实现打开窗口B的功能。可以通过创建B窗口的实例并调用其exec()函数来实现模态对话框。
```cpp
void MainWindow::on_btn_openB_clicked()
{
BWindow bWindow;
if (bWindow.exec() == QDialog::Accepted) {
// 如果B窗口点击了确认按钮,则在textEdit中显示数字
ui->textEdit->append(QString::number(bWindow.getNum()));
}
}
```
5. 在窗口B中添加一个私有变量num,用于存储数字,并提供一个公有函数getNum()用于获取该数字。
```cpp
class BWindow : public QDialog
{
Q_OBJECT
public:
explicit BWindow(QWidget *parent = nullptr);
~BWindow();
int getNum() const;
private slots:
void on_btn_addNum_clicked();
private:
Ui::BWindow *ui;
int num;
};
```
6. 在窗口B的槽函数中实现在textEdit中显示数字的功能,并将该数字存储到num变量中。
```cpp
void BWindow::on_btn_addNum_clicked()
{
num++;
ui->textEdit->setText(QString::number(num));
}
```
7. 编译运行程序,点击窗口A中的btn_openB按钮可以打开窗口B,在窗口B中点击btn_addNum按钮可以在窗口A的textEdit中显示数字。
完整代码如下:
mainwindow.h
```cpp
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include "bwindow.h"
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void on_btn_openB_clicked();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
```
mainwindow.cpp
```cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_btn_openB_clicked()
{
BWindow bWindow;
if (bWindow.exec() == QDialog::Accepted) {
// 如果B窗口点击了确认按钮,则在textEdit中显示数字
ui->textEdit->append(QString::number(bWindow.getNum()));
}
}
```
bwindow.h
```cpp
#ifndef BWINDOW_H
#define BWINDOW_H
#include <QDialog>
QT_BEGIN_NAMESPACE
namespace Ui { class BWindow; }
QT_END_NAMESPACE
class BWindow : public QDialog
{
Q_OBJECT
public:
explicit BWindow(QWidget *parent = nullptr);
~BWindow();
int getNum() const;
private slots:
void on_btn_addNum_clicked();
private:
Ui::BWindow *ui;
int num;
};
#endif // BWINDOW_H
```
bwindow.cpp
```cpp
#include "bwindow.h"
#include "ui_bwindow.h"
BWindow::BWindow(QWidget *parent) :
QDialog(parent),
ui(new Ui::BWindow),
num(0)
{
ui->setupUi(this);
}
BWindow::~BWindow()
{
delete ui;
}
int BWindow::getNum() const
{
return num;
}
void BWindow::on_btn_addNum_clicked()
{
num++;
ui->textEdit->setText(QString::number(num));
}
```
main.cpp
```cpp
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
```
阅读全文