Qt与HTML,jQuery交互实现类似QQ聊天界面

news/2024/7/11 1:15:50 标签: Qt, HTML, jQuery, 聊天界面

作为一个前端的小白,在jQueryHTML上真的是头疼不已,而项目开发正好需要用到HTMLjQuery做一个类似QQ聊天界面的消息记录框,查找了很多资料并自己动手终于将基本功能全部搞定了。接下来将详细谈一下:
先上效果图,毕竟有图有真相。
登录之后的效果图
1. 气泡效果
http://blog.csdn.net/tax10240809163com/article/details/50610637
2. 右键菜单
这里写图片描述
下面来看看代码:

/*div右键菜单,添加了两个子选项*/
 $("div").contextPopup({
         items: [
         { label:'Copy', action:function()
         { 
                Copy( divId );
         }
         },
        { label:'Delete', action:function()
          {
                Delete( divId );
           }
        },
        ]
  });

接下来就是两个子选项的JScript代码,调用Qt的函数,实现QtjQuery的交互。其中MainWindow是在Qt代码里面定义添加的,代码见下。

/******************在HTML里创建Qt的对象*************************/
void chatdemo::addObjectToJs()
{
    m_ui.webView->page()->mainFrame()->addToJavaScriptWindowObject( "MainWindow", this );
}


/******************复制和删除的jQuery代码*************************/
 /*复制消息*/
function Copy( id )
{
    MainWindow.JavascriptCallQtCopy( divId );
}
/*删除*/
function Delete( id )
{
    MainWindow.JavascriptCallQtDelete( divId );
    document.body.removeChild( document.getElementById( divId ) );
}
/******************Qt工程中的代码*************************/
//在网页中右键复制
void NiceTalk::JavascriptCallQtCopy( QString strId )
{
    //查询数据库,将返回的消息内容写入系统剪贴板
    //QString str = ...
    QApplication::clipboard()->setText( str );
}

//在网页中右键删除
void NiceTalk::JavascriptCallQtDelete( QString strId )
{
    ;//查询数据库,将该条记录删除
}

//Js回调Qt获取即将写入的新消息
QString NiceTalk::JavascriptCallQtGetNewMessage()
{
    ;
    QString strNew = //要写进HTML文件的代码.
    return strNew;
}
  1. 双击看图

这里写图片描述

/******************实现双击看图的代码*************************/
/*获取id*/
$("div").dblclick(function()
{
    divId = $(this).attr("id");
    MainWindow.JavascriptCallQtDbclick( divId );
});

//在网页中双击
void NiceTalk::JavascriptCallQtDbclick( QString strId )
{
    ;//strId 是消息的ID,根据stride读取数据库获取图片在本地的绝对路径并显示
}`
  1. 滚动条自动滚动
    滚动条的自动滚动的设置,以前一直以为是设置一下scrollTop的值就可以了,后来才发现,这样设置后必须要有人为的操作才能实现结果。要想实现页面加载完成后滚动条自动滚动到底就是讲要显示的是scrollTop的值设定就可以了。
$(document).ready(function()
{
    //获取body的ID
    var div = document.getElementById('content');
    //将scrollTop的值设为可以显示的最大值
    div.scrollTop = div.scrollHeight;
})

如果想要每次添加一条消息后滚动条也始终保持在最底部,在添加消息的代码里面将这些添加进去就可以了。

var div = document.getElementById( "content" );

var nodeDiv = document.createElement( "div" );
//从Qt里面获取要写进HTML文件的代码
nodeDiv.innerHTML = MainWindow.JavascriptCallQtGetNewMessage();
//将这一条消息添加到界面上去
document.body.appendChild( nodeDiv );

div.scrollTop = div.scrollHeight;

http://www.niftyadmin.cn/n/801421.html

相关文章

N个数去重并排序(C++)

代码&#xff08;C&#xff09; #include <iostream> #include <map>using namespace std;void show(map<int, char> m) {map<int, char>::iterator it;for (it m.begin(); it ! m.end(); it) {cout << it->first << " ";} …

MySQL 存储表情字符

修改 服务器端 修改数据库配置文件/etc/my.cnf&#xff0c;添加下面的配置&#xff0c;然后重启服务器&#xff1a; 1234567[mysqld]character-set-serverutf8mb4collation_serverutf8mb4_unicode_ciinit-connect"SET NAMES utf8mb4"[mysql]default-character-setutf…

反转字符串中的字符 【Python百题大冲关】

反转字符串中的字符 挑战介绍 实现一个算法来实现反转字符数组的功能。反转的要求如下&#xff1a; 将字符数组的字符进行反转&#xff0c;例如 [b, , a, r] 变成 [r, a, , b]。将字符数组替换为反转后的数组。 挑战内容 本次挑战中&#xff0c;你需要在 reverse_chars.p…

楼梯问题(斐波那切数列)(C++)

问题描述 代码实现(C) 底层原理&#xff1a;斐波那切数列 #include <iostream>using namespace std;int stairNums(int n) {if (n 1) {return 1;}if (n 2) {return 2;}return stairNums(n - 1) stairNums(n - 2); }int main() {int n;cin >> n;cout << st…

病毒(bzoj 2938)

Description 二进制病毒审查委员会最近发现了如下的规律&#xff1a;某些确定的二进制串是病毒的代码。如果某段代码中不存在任何一段病毒代码&#xff0c;那么我们就称这段代码是安全的。现在委员会已经找出了所有的病毒代码段&#xff0c;试问&#xff0c;是否存在一个无限长…

Qt使用QMediaplayer类做音频播放器

刚刚看了下&#xff0c;已经有一个月没有写博客了&#xff0c;今天没事&#xff0c;用Qt做了一个很小的音频播放器。实现了基本功能&#xff0c;界面没有美化&#xff0c;难看的我都有点不忍心了。言归正传&#xff0c;说说体会和具体实现吧。 在Qt4的时候&#xff0c;Qt集成了…

找到给定字符串中的不同字符 【Python百题大冲关】

找到给定字符串中的不同字符 挑战介绍 在不考虑字符排列的条件下&#xff0c;对于相差只有一个字符的两个字符串&#xff0c;实现一个算法来识别相差的那个字符。要求如下&#xff1a; 当传入的字符串为 aad 和 ad 时&#xff0c;结果为 a。当传入的字符串为 aaabccdd 和 ab…

MySQL查看相关信息

使用MySQL时&#xff0c;需要了解当前数据库的情况&#xff0c;例如当前的数据库大小、字符集、用户等等。下面总结了一些查看数据库相关信息的命令 1&#xff1a;查看显示所有数据库 mysql> show databases; -------------------- | Database | --------------…