你好,欢迎访问我的博客!登录
当前位置:首页 - QT - 正文 求知成瘾,却无作品!

QT使用qxmpp(qt creator)

2020-02-25QT攻城狮4400°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,然后进入到解压后的目录:

1.png

在这个目录中新建一个文件夹: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

2.png

一开始我选的是MinGW 32-bit的,各种问题,等到后面的时候,又选了msvc2017 32bit的,还是各种问题,到最后才发现,正确的是msvc2017 64bit

这里需要说明的是,应该选择哪个,跟你本地的环境有关系,我这里指出来,具体用的时候,需要参照自己的环境选择,主要分清楚自己用cmake编译出来的库32位还是64位

创建项目其他没啥要注意的

项目创建好之后,在项目上点击右键,选择添加库

3.png

然后选择外部库

4.png

然后选择库文件C:\Program Files (x86)\qxmpp\lib\qxmpp.lib:

5.png

然后如下图显示

6.png

一般情况下,选择了库文件后,包含路径会自动加载出来,其实就是跟lib平级的include文件夹,他们都位于C:\Program Files (x86)\qxmpp目录下面

点击下一步

7.png

列出了将会对pro文件做出的修改,这个是由IDE自动完成的。

点击完成后,pro文件中就多了上图中列出来的内容。

剩下的很简单了,直接在代码中include就可以了

8.png

上图显示已经有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用户已经上线了

10.png


到此,qt项目已经成功使用qxmpp库连接至服务器。



未定义标签

发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。


  登录