16,215
社区成员
发帖
与我相关
我的任务
分享
#include "mainwindow.h"
#include <QApplication>
#include "centralairconditioner.h"
#include "databasecontrol.h"
#include "client.h"
centralAirConditioner airConditioner ;
int checkConnect;
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
client *x = new client;
MainWindow *w= new MainWindow;;
checkConnect = 0;
//QThread *thread = new QThread(x);
//x->moveToThread(thread);
//thread->start();
QObject::connect(&airConditioner, SIGNAL(SignalInit()), w, SLOT(Init()));
//bool isConnected;
QObject::connect(w, SIGNAL(DataLogin(QString, QString)), x, SLOT(Login(QString, QString)),Qt::DirectConnection);
//qDebug() << "isConnected:" << isConnected;
QObject::connect(x, SIGNAL(TransMainWindow(int, float, float)), &airConditioner, SLOT(RevState(int, float, float)));
QObject::connect(x, SIGNAL(RefreshCost(QString, QString)), &airConditioner, SLOT(RevCost(QString, QString)));
QObject::connect(&airConditioner, SIGNAL(SignalRequestEnd()), x, SLOT(SendRequestEnd()));
//明明只连接了一次,但为什么槽函数却执行了多次呢?
//QObject::connect(&airConditioner, SIGNAL(SignalRequest()), x, SLOT(SendRequest()));
QObject::connect(&airConditioner, ¢ralAirConditioner::SignalRequest, x, &client::SendRequest, Qt::UniqueConnection);
QObject::connect(&airConditioner, SIGNAL(SignalBlowSpeed()), x, SLOT(SendBlowSpeed()));
QObject::connect(x, SIGNAL(SignalChangeTemperature()), &airConditioner, SLOT(ChangeTemperature()));
QObject::connect(x, SIGNAL(SignalChangeBlowSpeed()), &airConditioner, SLOT(ChangeBlowSpeed()));
//databaseControl database;
QObject::connect(w, SIGNAL(SignalLogout()), x, SLOT(Logout()));
QObject::connect(x, SIGNAL(SignalRefresh()), w, SLOT(Refresh()));
if(!w->UserRegister())
{
w->close();
//this->hide();
//待修正关闭事件
}
//w->Init();
//qDebug() << "test";
w->show();
w->ShowWidgetMain();
return a.exec();
}
QObject::connect(&airConditioner, ¢ralAirConditioner::SignalRequest, x, &client::SendRequest, Qt::UniqueConnection);
void client::SendRequest()
{
QString a="request/"+QString::number(airConditioner.GetTemperature(), 'f', 2)+"/"+QString::number(airConditioner.GetWorkTemperature(), 'f', 2);
socket->write(a.toLatin1());
}
void centralAirConditioner::ChangeWorkTemperature(float tmp)
{
//qDebug() << __func__ << tmp;
workTemperature = tmp;
if(fabs(temperature - workTemperature) > 0.01) //当工作温度和房间温度不相等时
{
sendMux=1;
if(temperature < workTemperature && workModel == 1) //满足制热条件
{
sendMux=2;
emit SignalRequest();
qDebug()<<"制热";
}
else if(temperature > workTemperature && workModel == 0) //满足制冷条件
{
sendMux=2;
emit SignalRequest();
qDebug()<<"制冷";
}
else
{
sendMux=0;
}
qDebug() << __func__ << "1" << temperature << workTemperature;
}
qDebug() << __func__ << "2 "<< temperature << workTemperature;
}
"request/25.00/24.00"
Get request_in 1
Get request _out 1
Get request 1
"request/24.90/24.00"
Get request _out 1
Get request 1
"request/24.80/24.00"
Get request _out 1
Get request 1
"request/24.70/24.00"
Get request _out 1
Get request 1
"request/24.60/24.00"
Get request _out 1
Get request 1
"request/24.50/24.00"
Get request _out 1
Get request 1
"request/24.40/24.00"
Get request _out 1
Get request 1
"request/24.30/24.00"
Get request _out 1
Get request 1
"request/24.20/24.00"
Get request _out 1
Get request 1
"request/24.10/24.00"
每一下发送socket,里面的变量都有被改变,我理解的更像是纯粹这个函数被调用了9次……请问还是我理解错了?