QT开发中文网

qt/c++如何在不同ui界面之间发送信号,并用代码说明

在Qt/C++中,可以使用信号和槽机制在不同的UI界面之间发送信号。以下是一个简单的示例代码:

// Sender UI界面 class SenderWidget : public QWidget {

Q_OBJECT

public:

explicit SenderWidget(QWidget *parent = nullptr);

signals:

void sendData(QString data); // 定义信号,用于发送数据

private slots:

void onSendButtonClicked(); // 用于处理按钮点击事件的槽函数

private:

QPushButton *m_sendButton;
QLineEdit *m_dataEdit;

};

SenderWidget::SenderWidget(QWidget *parent)

: QWidget(parent)

{

m_sendButton = new QPushButton("Send", this);
connect(m_sendButton, &QPushButton::clicked, this, &SenderWidget::onSendButtonClicked);

m_dataEdit = new QLineEdit(this);

}

void SenderWidget::onSendButtonClicked() {

QString data = m_dataEdit->text(); // 获取输入框中的文本
emit sendData(data); // 发送信号

}

// Receiver UI界面 class ReceiverWidget : public QWidget {

Q_OBJECT

public:

explicit ReceiverWidget(QWidget *parent = nullptr);

public slots:

void onDataReceived(QString data); // 处理接收到的数据的槽函数

private:

QLabel *m_dataLabel;

};

ReceiverWidget::ReceiverWidget(QWidget *parent)

: QWidget(parent)

{

m_dataLabel = new QLabel(this);

}

void ReceiverWidget::onDataReceived(QString data) {

m_dataLabel->setText(data); // 在标签中显示接收到的数据

}

// 主程序 int main(int argc, char *argv[]) {

QApplication a(argc, argv);

SenderWidget sender;
ReceiverWidget receiver;

// 在两个界面之间建立连接
QObject::connect(&sender, &SenderWidget::sendData, &receiver, &ReceiverWidget::onDataReceived);

sender.show();
receiver.show();

return a.exec();

}

在上述示例中,SenderWidget类定义了一个发送信号sendData的函数,当按钮被点击时,该函数会被调用并发送数据。ReceiverWidget类定义了一个处理接收到数据的槽函数onDataReceived,并在标签中显示接收到的数据。

在主程序中,使用QObject::connect()函数将SenderWidget中的sendData信号连接到ReceiverWidget中的onDataReceived槽函数,从而实现了两个UI界面之间的通信。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=941

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?