16,815
社区成员




#ifndef SEND_H
#define SEND_H
#include <QDialog>
namespace Ui {
class send;
}
class send : public QDialog
{
Q_OBJECT
signals:
void sent_data(int);
public:
explicit send(QWidget *parent = 0);
~send();
private slots:
void on_pushButton_clicked();
private:
Ui::send *ui;
};
#endif // SEND_H
#include "resever.h"
#include "ui_resever.h"
//你这个代码的功能是在reserve界面调用send界面使之显示出来,
//将send界面的数值传送给reserve界面。。好,你发现没,,你传送的数值是有限的,,太长了 就传不了,因为你的int类型的限制。
resever::resever(QWidget *parent) :
QWidget(parent),
ui(new Ui::resever)
{
ui->setupUi(this);
send1 = new send;///?这里只需要实例化send,你去reserve.h里面看看去,定义的部分放在里面了。
//定义的部分还是放在.h里面好(保证你在void resever::on_pushButton_clicked()里面不需要重新定义一个新的对象)
//,,名字是 send1,以便下一行语句使用到。
connect(send1,SIGNAL(sent_data(int)),this,SLOT(dataprocess(int)));
//?这里就是信号槽机制了,只是接受 发送的对象是两个,不是传统的我发送,我接受。
//来自send1 的一个信号,当前对象接受到信号后做dataprocess(int)操作
// send2->show();//还有,这里我不想显示。不显示的话发射的信号就过不来。
}
resever::~resever()
{
delete ui;
}
void resever::dataprocess(int value)
{
ui->lcdNumber->display(value);
}
void resever::on_pushButton_clicked()
{
//send *send1=new send(this);//现在的问题是这个按钮打开的界面和在构造函数里面的链接不是一样,所以不能用,怎么解决
//完全没必要重新定义一个send的 对象。就使用原来的send1就可以了。
send1->show(); //你这里是想干啥啊?想显示send。ui???
}
#include "send.h"
#include "ui_send.h"
send::send(QWidget *parent) :
QDialog(parent),
ui(new Ui::send)
{
ui->setupUi(this);
}
send::~send()
{
delete ui;
}
void send::on_pushButton_clicked()
{
emit sent_data(ui->lineEdit->text().toInt(false));
}