在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界面之间的通信。