qt 窗体间通信-关于QTsocket Client客户端 进不去槽函数

问题描述

关于QTsocket Client客户端 进不去槽函数

代码如下:
using namespace std;

Client::Client(QObject *parent) : QObject(parent)
{
connect(&client,SIGNAL(connected()), this, SLOT(startTransfer()));
connect(&client, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(connectError(QAbstractSocket::SocketError)));
connect(&client, SIGNAL(readyRead()), this, SLOT(startRead()));

}
Client::~Client()
{
client.close();
}

void Client::startTransferhandle(int chan,int val)
{
qDebug(">>>>>>>>>>>>>>>>>>>>>>>>");
qDebug()<<"chan:"<<chan<<"t"<<"val:"<<val<<endl;
/*
QString setvalue = QString("%1:%2:%3").arg("SET").arg(chan).arg(val);
const char* str = qPrintable(setvalue);
// client.write(id ,13);
client.write(str);*/
}

void Client::start(QString address, quint16 port)
{
QHostAddress addr(address);
client.connectToHost(addr,port);
}

void Client::startTransfer()
{
CV = new ChanwithVal;
connect(CV, SIGNAL(sendATT(int,int)), this, SLOT(startTransferhandle(int,int)));
char error[100] = "connect success";
cout << error << endl;
client.write(error,100);
}

void Client::connectError(QAbstractSocket::SocketError)
{
char error[100] = "connect error";
cout << error << endl;
}

void Client::startRead()
{
char buffer[100] = {0};
client.read(buffer,client.bytesAvailable());
cout << "server say:" << buffer << endl;
client.close();
Client.h文件
class Client : public QObject
{
Q_OBJECT

public:
explicit Client(QObject* parent = 0);
~Client();
void start(QString address, quint16 port);

public slots:
void startTransfer();
void startRead();
void connectError(QAbstractSocket::SocketError);
private:
class ChanwithVal *CV;
QTcpSocket client;
// QString userStr;
private slots:
void startTransferhandle(int,int);
};
ChanwithVal.h文件
namespace Ui {
class ChanwithVal;
}

class ChanwithVal : public QDialog
{
Q_OBJECT

QPoint move_point;
bool mouse_press;

public:
explicit ChanwithVal(QWidget *parent = 0);
~ChanwithVal();
void mousePressEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *event);
void mouseMoveEvent(QMouseEvent *event);

signals:
void setATT(int, int, int);
void sendATT(int,int);

private:
Ui::ChanwithVal *ui;

ChanwithVal.cpp文件
ChanwithVal::ChanwithVal(QWidget *parent) :
QDialog(parent),
ui(new Ui::ChanwithVal)
{
ui->setupUi(this);
ui->spinBox_chan->setMaximum(4);
ui->spinBox_chan->setMinimum(1);
ui->spinBox_val->setMaximum(120);
ui->spinBox_val->setMinimum(0);
// ui->horizontalSlider_setAtt->setEnabled(false);

connect(ui->ChanButton_OK, SIGNAL(clicked()), this, SLOT(getChanAndVal()));
void ChanwithVal::getChanAndVal(void)
{
// QString qstr;

#ifdef DEBUGMODE
qDebug("Channel:%d, Value:%d", ui->spinBox_chan->value(), ui->spinBox_val->value());
qDebug("second window button clicked");
#endif
emit setATT(ui->spinBox_chan->value(), ui->spinBox_val->value(), 1);
emit sendATT(ui->spinBox_chan->value(), ui->spinBox_val->value());

解决方案

CV = new ChanwithVal;
connect(CV, SIGNAL(sendATT(int,int)), this, SLOT(startTransferhandle(int,int)));进不去startTransferhandle(int,int)。没有打印信息。
新手求帮助

时间: 2024-08-03 22:17:53

qt 窗体间通信-关于QTsocket Client客户端 进不去槽函数的相关文章

在.NET中利用委托实现窗体间通信

对于窗体间简单的通信,采用VB6.0的方法就能满足我们的要求,但在一些架构设计复杂的应用中,这种方法就显得有点捉襟见肘了,同时该方法还有一个缺点,就是它仅仅对通过.NET窗体向导添加进去的窗体起作用,而对于自定义的窗体类型我们是无法添加到Forms对象集合中的.而且也和其它诸如构造函数传参等方法一样,会在窗体间大量互相引用各自的成员,造成了彼此之间存在着很大的耦合性,非常不利于窗体模块间的独立,这不符合良好软件设计模式的思想. 如果我们想在一个窗体中访问另一个窗体中自定义的成员,必须把该成员的可

在.NET中利用委托实现窗体间通信_实用技巧

对于窗体间简单的通信,采用VB6.0的方法就能满足我们的要求,但在一些架构设计复杂的应用中,这种方法就显得有点捉襟见肘了,同时该方法还有一个缺点,就是它仅仅对通过.NET窗体向导添加进去的窗体起作用,而对于自定义的窗体类型我们是无法添加到Forms对象集合中的.而且也和其它诸如构造函数传参等方法一样,会在窗体间大量互相引用各自的成员,造成了彼此之间存在着很大的耦合性,非常不利于窗体模块间的独立,这不符合良好软件设计模式的思想. 如果我们想在一个窗体中访问另一个窗体中自定义的成员,必须把该成员的可

c++.net 如何实现窗体间的通信?超级棘手

问题描述 不要跟我说去找C#的例子,c++.net还是有点不一样,最好给个例子,感激不尽啊!! 解决方案 解决方案二:就是进程间通信,你看一下windows核心编程解决方案三:窗体间通信?跨form?不知道lz的项目是什么类型的,我的windows窗体应用程序每个form是一个类,把预访问的数据改成共有就可以调用了.

Hadoop RPC通信Client客户端的流程分析

Hadoop的RPC的通信与其他系统的RPC通信不太一样,作者针对Hadoop的使用特点,专门的设计了一套RPC框架,这套框架个人感觉还是有点小复杂的.所以我打算分成Client客户端和Server服务端2个模块做分析.如果你对RPC的整套流程已经非常了解的前提下,对于Hadoop的RPC,你也一定可以非常迅速的了解的.OK,下面切入正题. Hadoop的RPC的相关代码都在org.apache.hadoop.ipc的包下,首先RPC的通信必须遵守许多的协议,其中最最基本的协议即使如下: /**

代码-Qt中使用WinThread通常如何实现线程间通信如传递QByteArray

问题描述 Qt中使用WinThread通常如何实现线程间通信如传递QByteArray 因为多线程要写在一个类里,并且考虑效率.需要使用WinThread.初学Qt,恳请各位前辈赐教.最好有代码,万分感谢! 解决方案 PostThreadMessage在线程之间发送数据

在窗体间传递参数的几种常用办法

在实际开发应用中,常常需要在窗体间传递参数.常用的几种参数传递方法有如下几种: 1.使用openargs 在调用的窗体使用如下语句: docmd.openform "被调用的窗体", , , , , , "参数值" 在被调用的窗体使用me.openargs即可获取传递过来的参数 2.使用全局变量 先设置一个全局变量,例如:gstrPara, Public gstrPara as string 在调用之前传递参数值给这个全局变量 gstrPara="参数值&

在.net中轻松掌握Windows窗体间的数据交互

window|交互|数据 Windows 窗体是用于 Microsoft Windows 应用程序开发的.基于 .NET Framework 的新平台.此框架提供一个有条理的.面向对象的.可扩展的类集,它使您得以开发丰富的 Windows 应用程序.一个Windows窗体就代表了.NET架构里的System.Windows.Forms.Form类的一个实例. 作者在CSDN技术论坛.NET板块下的C#分类经常看到有人问起如何在两个Form间传递数据,访问修改对方窗体里面的值.对于有经验的程序员来

在.net中轻松掌握Windows窗体间的数据交互(一)

window|交互|数据 在.net中轻松掌握Windows窗体间的数据交互(一) zhzuo(秋枫) Windows 窗体是用于 Microsoft Windows 应用程序开发的.基于 .NET Framework 的新平台.此框架提供一个有条理的.面向对象的.可扩展的类集,它使您得以开发丰富的 Windows 应用程序.一个Windows窗体就代表了.NET架构里的System.Windows.Forms.Form类的一个实例. 作者在CSDN技术论坛.NET板块下的C#分类经常看到有人问

在.net中轻松掌握Windows窗体间的数据交互(二)

window|交互|数据 在.net中轻松掌握Windows窗体间的数据交互(二) zhzuo(秋枫) <在.net中轻松掌握Windows窗体间的数据交互(一)>一文中我们讲了使用带参数的构造函数来实现窗体间的数据传递,我认为是用的比较多的一种,接下来让我们看看另外两种实现方法. 二.给窗体添加属性或方法 1.使用Form类的Owner属性 获取或设置拥有此窗体的窗体.若要使某窗体归另一个窗体所有,请为其 Owner 属性分配一个对将成为所有者的窗体的引用.当一个窗体归另一窗体所有时,它便随