因为要写一个跨平台内网传输工具DKD,为了最大程度的代码复用,所以考虑使用QT,对QT不熟悉,10天的摸索,终于画出简易的仿QQ界面,开发环境为:qt creator+gcc,效果如下:

主窗口的区域切割为三部分:

主窗口类派生于QFrame,关键代码如下:

    //without system titlebarsetWindowFlags(Qt::FramelessWindowHint);setWindowFlags(Qt::WindowStaysOnTopHint);//place windowQRect deskRect = QApplication::desktop()->availableGeometry();this->move(deskRect.right()-280,30);//new subclass widgetsm_titlebar = new TitleBar(this);m_centerWgt = new CenterWidget(this);m_bottomWgt = new BottomWidget(this);m_skinmgr = new SkinMgr(this);m_hostinfwnd = new HostInfWnd(this);//layoutQVBoxLayout * pMainLayout = new QVBoxLayout(this);pMainLayout->addWidget(m_titlebar,0,Qt::AlignTop);pMainLayout->addWidget(m_centerWgt);pMainLayout->addWidget(m_bottomWgt,0,Qt::AlignBottom);pMainLayout->setSpacing(0);pMainLayout->setContentsMargins(0,0,0,0);setLayout(pMainLayout);//qssOnSkinChange(m_strMainSkin);//signal handlerconnect(m_titlebar,SIGNAL(evtClose()),this,SLOT(CloseEvtHandler()));connect(m_titlebar,SIGNAL(evtMinWnd()),this,SLOT(showMinimized()));connect(m_titlebar,SIGNAL(evtSkinMgr()),this,SLOT(SkinMgrHandler()));connect(m_skinmgr,SIGNAL(SigSkinChange(const QString &)),this,SLOT(OnSkinChange(const QString&)));connect(m_titlebar,SIGNAL(evtShowHostInf()),this,SLOT(OnShowHostInf()));

先不管细节,来看看标题栏的实现。

网上资料很多,qss可以轻松实现界面需要,窗口拖动,换肤方面网上都有代码,不多说,至于图片资源,我是用MultiExtractor从腾讯的PE文件里提取的,非商业用途,用下也没问题。

再说,底栏,底栏同标题栏一样简单,QQ的半透明效果是用一张比较透明的Png图片打底mask出来的,我也随便找了一张,实现了类似效果,也是QSS实现。但是在windows下会出现焦点按钮被虚线框住的情况,暂时我没管他。

主区域中的搜索框是一个子类化的QLineEeEdit实现的,我还没搞好他。

"tab"是用PUSHBUTTON实现的,有图片就简单,不多说。

剩下的列表控件原生QLISTWIDGET,通过方法setItemWidget实现,虽然方法笨,但是满足了需求。需要注意的细节有:item的Hover,pressed的背景设置,item的高度设置,和滚动条,滚动条我没深究,只是简单的设置了背景色,效果差强人意:

关于QLISTWDIGET的QSS如下:

{QString myss = QString("QListWidget::item:selected {background-color:rgb(252,235,171);}""QListWidget::item:hover:!selected {background-color:rgb(252,240,193);}""QListWidget::scrollbar {background-color:rgb(252,235,171);}");m_richlist->setStyleSheet(myss);m_richlist->verticalScrollBar()->setStyleSheet("QScrollBar:vertical {border: 2px solid grey;background:rgb(109,111,111)}");m_richlist->setMouseTracking(true);m_richlist->setAutoScroll(true);for(int i=0;i<100;++i){UsersListItem * myitem = new UsersListItem(m_richlist); QListWidgetItem * Item = new QListWidgetItem();m_richlist->addItem(Item);Item->setSizeHint(myitem->sizeHint());m_richlist->setItemWidget(Item,myitem);}}

UserListItem定义:

class UsersListItem : public QWidget
{Q_OBJECT
public:explicit UsersListItem(QWidget *parent = 0);virtual QSize   sizeHint() const{return QSize(100,48);}
private:QLabel * m_labAddress;QLabel * m_labHeaderPic;QLabel * m_labUser;signals:public slots:};

QT新手,不多说话。下一步写功能实现的历程

QT 简单仿写QQ界面相关推荐

  1. WPF系列教程——(一)仿TIM QQ界面 - 简书

    WPF系列教程--(一)仿TIM QQ界面 - 简书 原文: WPF系列教程--(一)仿TIM QQ界面 - 简书 TIM QQ 我们先来看一下TIM QQ长什么样,整体可以将界面分为三个部分 TIM ...

  2. 【Qt】仿360安全卫士界面(自定义阴影边框类)

    00. 目录 文章目录 00. 目录 01. 概述 02. 开发环境 03. 自定义阴影边框类设计与实现 04. 测试代码 05. 示例下载 06. 附录 01. 概述 Qt默认的QDialog和QW ...

  3. Flutter | 超简单仿微信QQ侧滑菜单组件(改)

    文章目录 一.明确需求 二.实现需求 1. 滑动菜单实现使用`SingleChildScrollView`: 2. 列表滑动不够距离则菜单再次隐藏,距离足够则完全展示菜单. 3. 菜单支持事件处理. ...

  4. Vue3+ElementPlus网页端聊天|vue3.0仿微信/QQ界面实例

    vue3-webchat 基于vue3.0.5开发的仿微信|QQ界面桌面端聊天实例. 运用vue3.x全家桶技术+element-plus+v3layer+v3scroll搭建的仿微信/QQ界面网页聊 ...

  5. 【仿写酷界面】【HenCoder】仿小米运动的运动记录界面

    MISportsConnectWidget 项目地址:sickworm/MISportsConnectWidget  简介:[仿写酷界面][HenCoder]仿小米运动的运动记录界面 更多:作者    ...

  6. Vue3 PC桌面端聊天室|vue3.0+elementPlus仿微信/QQ界面

    vue3-webchat 基于vue3.0.5开发的仿微信|QQ界面桌面端聊天实例. 运用vue3.x全家桶技术+element-plus+v3layer+v3scroll搭建的仿微信/QQ界面网页聊 ...

  7. 仿写 QQ 和 微信 联系人列表:

    QQ聊天联系人界面效果仿写: 1,先上效果图 ,因为未找到 比较好用的 gif录制工具 .所以上的都是静态图片: 2,代码: 主界面: 两个 Fragment交互: class MainActivit ...

  8. QT开发--仿写一个智能家居APP

    一.给工程添加图片 二.引用添加的图片 在界面设置界面点击按钮或者文本控件,右键改变样式表,然后再添加资源选择border-image,然后就可以找到图片进行编译控制. 三.qt布局 水平布局,垂直布 ...

  9. 模拟jQuery,简单仿写API

    jQuery是一个高效.精简并且功能丰富的 JavaScript 工具库.它提供的 API 易于使用且兼容众多浏览器,这让诸如 HTML 文档遍历和操作.事件处理.动画和 Ajax 操作更加简单.最近 ...

最新文章

  1. CSS 布局:40个教程、技巧、例子和最佳实践
  2. ActiveMQ常见问题
  3. IDentif.AI | 开发AI平台以快速确定包括COVID-19在内感染的治疗方案
  4. 镁的提取及应用_电熔镁炉、电熔镁以及菱镁耐火材料的发展及简介
  5. 2014年工作中遇到的10个问题:221-230
  6. jdk官方版 v1.7+安装教程
  7. PE学习(四)第四章:导入表
  8. 计算机在线考试系统的参考文献,基于JSP的在线考试系统
  9. Python3可变字符串代码实现
  10. 从vuex源码分析module与namespaced
  11. MySQL事务以及加锁机制
  12. SAP License:COPA分摊循环-FKART开票类型作为循环接收方
  13. 转载Docker in production: An history of failure
  14. unity 随机数_Unity 雨水滴到屏幕效果
  15. 精简的Linux启动过程
  16. 基于程序员职业对于婚配问题的研究——程序员为何单身?
  17. 我是怎么画架构图的?
  18. Python练习题 01
  19. 新浪微博客户端开发之授权登录+获取微博列表
  20. Harmonious Graph

热门文章

  1. SAP EWM 交货单暂存区仓位确定(配置实现 / 前台维护)含操作实例
  2. 【企业】黄光裕的战争:国美野蛮成长下的菊与刀
  3. Lua下的ECS框架
  4. 分布式算法 - Raft算法
  5. 企业微信开发——企业内部自建应用开发(第二篇)---JS_SDK配置
  6. 算法刷题7(C++)BFS算法
  7. 【微信小程序】全局样式、局部样式、全局配置
  8. 解决IDEA输出中文显示为问号
  9. 华为magicbook电脑看久了眼睛累的问题
  10. MATLAB求解Lyapunov方程