QT使用qxmpp(qt creator)
2020-02-25QT攻城狮3699°c
A+ A-文章主要简述如何在qt creator项目中使用qxmpp。
本地操作系统:win7 64bit 旗舰版
cmake(64bit)
qt creator 4.8.2(对应的qt版本为qt 5.12.2)
xmpp服务器:openfire4.3.2(文章不描述如何安装,如何安装自行百度搜)
第一步:从github下载qmxpp的发行版源码,我这里下载的是qxmpp-1.2.0.zip
第二步:依照官方给的构建步骤,使用cmake编译并安装项目:
下载的压缩包里面有个README.md文件,里面有两段比较主要的说明:
Building QXmpp ============== QXmpp requires Qt 5.7 or higher with SSL enabled. It uses CMake as build system. Build from command line: mkdir build cd build cmake .. cmake --build .
请仔细看building说明,我在windows里面的操作是,首先解压这个zip,然后进入到解压后的目录:
在这个目录中新建一个文件夹:build
然后进入这个build文件夹后,按住shfit键,点击鼠标右键,选择在此处打开命令行窗口
然后再执行cmake ..
然后再执行cmake --build .
就会自动在新建的cmake文件夹里面构建
构建完毕后继续执行cmake --build . --target install
就会安装到你本机,我的是自动安装到C:\Program Files (x86)\qxmpp这个路径了,这里贼坑,第一眼看这个目录,以为生成的是32位的库,其实他是个64位的库,分清楚是32位的库还是64位的库很重要。
Installing QXmpp ================ After building QXmpp, you can install the Headers, Libraries and Documentation using the following command: Install from command line: cmake --build . --target install
到此,qxmpp的库算是准备好了,下面的内容就是在qt项目中使用qxmpp。
第三步:在项目中引入qxmpp库
这里有个前提,因为qxmpp使用的是cmake编译,也就意味着你在qt creator中创建项目的时候得选msvc,我这里选msvc2017 64bit
一开始我选的是MinGW 32-bit的,各种问题,等到后面的时候,又选了msvc2017 32bit的,还是各种问题,到最后才发现,正确的是msvc2017 64bit
这里需要说明的是,应该选择哪个,跟你本地的环境有关系,我这里指出来,具体用的时候,需要参照自己的环境选择,主要分清楚自己用cmake编译出来的库32位还是64位
创建项目其他没啥要注意的
项目创建好之后,在项目上点击右键,选择添加库
然后选择外部库
然后选择库文件C:\Program Files (x86)\qxmpp\lib\qxmpp.lib:
然后如下图显示
一般情况下,选择了库文件后,包含路径会自动加载出来,其实就是跟lib平级的include文件夹,他们都位于C:\Program Files (x86)\qxmpp目录下面
点击下一步
列出了将会对pro文件做出的修改,这个是由IDE自动完成的。
点击完成后,pro文件中就多了上图中列出来的内容。
剩下的很简单了,直接在代码中include就可以了
上图显示已经有qxmpp的库文件了,如果此时你的代码里面没有自动提示qmxpp的库,可以清理一下项目,在菜单栏选择构建--清理项目,然后就会发现有自动提示qxmpp了。
在下载的zip包中有官方提供的示例代码,在examples目录下面。
最后使用官方提供的示例代码测试一下能否正常使用,我这里使用官方提供的第一个示例example_0_connected,连接xmpp服务器:
我的示例代码可能和官方给的不太一样,我感觉官方给的示例代码有问题
#include "mainwindow.h" #include "ui_mainwindow.h" #include "qxmpp/QXmppClient.h" #include "qxmpp/QXmppLogger.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); QXmppClient *xmppClient = new QXmppClient(this); xmppClient->logger()->setLoggingType(QXmppLogger::StdoutLogging); connect(xmppClient,&QXmppClient::connected,[=](){ qDebug()<<"服务器连接成功!"; }); QXmppConfiguration config; config.setDomain("127.0.0.1"); config.setJid("[email protected]/qt"); config.setHost("127.0.0.1"); config.setPort(5222); config.setPassword("abc123"); xmppClient->connectToServer(config); } MainWindow::~MainWindow() { delete ui; }
因为是网络应用,所以需要在pro文件中添加 QT += network
直接运行项目,如果提示程序异常结束,重启qt creator即可
控制已经打印了和服务器交互的信息,
从下图可以看出,在服务端可以看到test1用户已经上线了
到此,qt项目已经成功使用qxmpp库连接至服务器。