QT两个ui之间传递数据

使用信号和槽的机制,实现页面间的数据传递。但是dialog的定义要在wiget中,若要实现登陆窗口在main.cpp中定义就难以调用了。。。


不知道该如何改进。

dialog.h



wiget.h


dialog.cpp


main.cpp

  • 0
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt 中,可以使用信号与槽机制来实现不同界面之间的信号传递。具体来说,可以在一个界面中定义一个信号,然后在另一个界面中定义一个槽函数,并将两者连接起来。 以下是一个示例代码,其中包括两个界面 `MainWindow` 和 `SecondWindow`,它们之间通过信号与槽机制进行通信: ```c++ // mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = nullptr); ~MainWindow(); signals: void mySignal(const QString &text); private: Ui::MainWindow *ui; }; #endif // MAINWINDOW_H ``` ```c++ // mainwindow.cpp #include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); connect(ui->btnSendSignal, &QPushButton::clicked, [=]() { emit mySignal(ui->lineEdit->text()); }); } MainWindow::~MainWindow() { delete ui; } ``` ```c++ // secondwindow.h #ifndef SECONDWINDOW_H #define SECONDWINDOW_H #include <QDialog> namespace Ui { class SecondWindow; } class SecondWindow : public QDialog { Q_OBJECT public: explicit SecondWindow(QWidget *parent = nullptr); ~SecondWindow(); public slots: void mySlot(const QString &text); private: Ui::SecondWindow *ui; }; #endif // SECONDWINDOW_H ``` ```c++ // secondwindow.cpp #include "secondwindow.h" #include "ui_secondwindow.h" #include <QDebug> SecondWindow::SecondWindow(QWidget *parent) : QDialog(parent), ui(new Ui::SecondWindow) { ui->setupUi(this); } SecondWindow::~SecondWindow() { delete ui; } void SecondWindow::mySlot(const QString &text) { qDebug() << "Received signal: " << text; } ``` 在上面的代码中,`MainWindow` 界面中定义了一个名为 `mySignal` 的信号,并在按钮点击事件中发射该信号。`SecondWindow` 界面中定义了一个名为 `mySlot` 的槽函数,并在该函数中处理接收到的信号。 在 `MainWindow` 界面中,我们在构造函数中使用 `connect` 函数将 `mySignal` 信号与 `SecondWindow` 界面中的 `mySlot` 槽函数连接起来。具体来说,我们使用了 lambda 表达式来实现信号与槽函数的连接。当按钮被点击时,`mySignal` 信号将发射,并传递一个字符串参数给槽函数。 在 `SecondWindow` 界面中,我们实现了 `mySlot` 槽函数,并使用 `qDebug` 函数输出接收到的信号参数。 当我们在 `MainWindow` 界面中点击按钮时,它将发射 `mySignal` 信号,并将 `lineEdit` 中的文本作为参数传递给 `SecondWindow` 界面中的 `mySlot` 槽函数,最终在控制台中输出接收到的字符串参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值