我是初学者,所以如果有可能向我解释如何在2个表单之间传递变量,例如: 我有第一个Form:Send.ui - send.cpp - send.h 第二种形式叫做:Receive.ui - receive.cpp - receive.h
我们假设我在Send.cpp中有一个名为age = 25的变量和一个按钮
我希望当我按下按钮时,他将打开第二个表格Receive.ui,我将在第二个表格中有一个变量age = 25
如果我更改了Send.cpp中的变量,那么他将在Receive.cpp中自动更改
并感谢advence
答案 0 :(得分:2)
对于对象之间的通信,Qt有一种称为Signals and Slots的机制。
以下是如何使用信号和插槽的示例:
在这个例子中,我将使用spinbox来直观地表示你提到的变量(年龄)。
<强> 1。打开接收表单
在“发送”中,创建将打开接收表单的按钮。
send.h
public:
QPushButton *pushButton;
send.cpp
pushButton = ui->pushButtonSend;
现在在主窗口中创建一个插槽以显示接收表单。
mainwindow.cpp
void MainWindow::showReceiveForm()
{
receiveForm->show();
}
mainwindow.h
private slots:
void showReceiveForm();
现在将点击信号从按钮连接到mainwindow.cpp中的插槽。这将在每次单击按钮时调用插槽功能。
connect(sendForm->pushButton,SIGNAL(clicked()),this,SLOT(showReceiveForm()));
要将年龄值发送到接收表单,只要在发送表单中更改了其值,请将发送表单中QSpinBox的valueChanged信号连接到接收表单中的插槽。
send.h:
public:
QSpinBox *spinBox;
send.cpp
spinBox = ui->spinBoxSend;
receive.cpp中的插槽:
void Receive::receiveAge(int age)
{
ui->spinBoxReceive->setValue(age);
}
现在连接mainwindow.cpp中的信号和插槽。
connect(sendForm->spinBox,SIGNAL(valueChanged(int)),receiveForm,SLOT(receiveAge(int)));
在这个例子中,我使用了来自QPushButton和QSpinBox的预定义信号,但是你可以创建自己的信号并随时发出它们。
在标题文件中定义自定义信号:
signals:
void exampleSignal(int someArgument);
然后发出&#34; emit&#34;关键字。
emit exampleSignal(somenumber);