1.Qt实现QQ界面是通过QToolBox类来实现的,基本结构是:QToolBox里面装QGroupBox,然后QGroupBox里面装QToolButton,设置好相关属性即可

2.定义类继承QToolBox

class Drawer : public QToolBox

3.在构造函数中完成布局,头文件代码展示,为了避免代码重复定义初始化函数

initToolButton
#ifndef DRAWER_H
#define DRAWER_H #include <QWidget>
#include <QToolBox>//工具盒类,层叠窗口,抽屉效果实现
#include <QToolButton> class Drawer : public QToolBox
{
Q_OBJECT public:
Drawer(QWidget *parent=,Qt::WindowFlags f = );
~Drawer();
void initToolButton(QToolButton **tb,QString name,QString pathpic); private :
QToolButton *toolbtn1;
QToolButton *toolbtn2;
QToolButton *toolbtn3;
QToolButton *toolbtn4;
QToolButton *toolbtn5;
QToolButton *toolbtn11;
QToolButton *toolbtn12;
QToolButton *toolbtn21;
QToolButton *toolbtn22; }; #endif // DRAWER_H

4.主要代码为.cpp文件

#include "drawer.h"
#include<QGroupBox>
#include <QVBoxLayout>
#include <QDebug> Drawer::Drawer(QWidget *parent, Qt::WindowFlags f):QToolBox(parent,f)
{
setWindowTitle("QQ");
initToolButton(&toolbtn1,"张远山","1.png");
qDebug()<<"ok";
initToolButton(&toolbtn2,"东奥","2.png");
qDebug()<<"ok";
initToolButton(&toolbtn3,"孙选成","3.png");
qDebug()<<"ok";
initToolButton(&toolbtn4,"司宽","4.png");
qDebug()<<"ok";
initToolButton(&toolbtn5,"张宇","5.png");
qDebug()<<"ok";
QGroupBox *gb1 = new QGroupBox;
QVBoxLayout *lay1 = new QVBoxLayout(gb1); lay1->setMargin();
lay1->setAlignment(Qt::AlignHCenter); lay1->addWidget(toolbtn1);
lay1->addWidget(toolbtn2);
lay1->addWidget(toolbtn3);
lay1->addWidget(toolbtn4);
lay1->addWidget(toolbtn5);
// lay1->addStretch(); initToolButton(&toolbtn11,"刘翔","11.png");
initToolButton(&toolbtn12,"詹姆斯","12.png");
QGroupBox *gb2 = new QGroupBox;
QVBoxLayout *lay2 = new QVBoxLayout(gb2);
lay2->addWidget(toolbtn11);
lay2->addWidget(toolbtn12);
lay2->setMargin();
lay2->setAlignment(Qt::AlignHCenter); initToolButton(&toolbtn21,"惠子","21.png");
initToolButton(&toolbtn22,"名人","22.png");
QGroupBox *gb3 = new QGroupBox;
QVBoxLayout *lay3 = new QVBoxLayout(gb3);
lay3->addWidget(toolbtn21);
lay3->addWidget(toolbtn22);
lay3->setMargin();
lay3->setAlignment(Qt::AlignHCenter); //准备好的抽屉插入TOOlBox中
this->addItem(gb1,"我的好友");
this->addItem(gb2,"陌生人");
this->addItem(gb3,"黑名单"); } Drawer::~Drawer()
{ } void Drawer::initToolButton(QToolButton **tb, QString name, QString pathpic)
{ (*tb) = new QToolButton;
(*tb)->setText(name);
(*tb)->setIcon(QPixmap(pathpic));
(*tb)->setIconSize(QSize(,));
(*tb)->setAutoRaise(true);
(*tb)->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); }

5.

(*tb)->setIcon(QPixmap(pathpic));表示设置按钮图标

6.

(*tb)->setAutoRaise(true);表示鼠标离开时按钮自动恢复为弹起状态

7.

(*tb)->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);表示设置按钮文字标签在图标旁边

8.查看运行效果图

Qt实现QQ界面的更多相关文章

  1. swift:用UITabBarController、UINavigationController、模态窗口简单的搭建一个QQ界面

    搭建一个QQ界面其实是一个很简单的实现,需要几种切换视图的控制器组合一起使用,即导航控制器.标签栏控制器.模态窗口.其中,将标签栏控制器设置为window的rootViewController,因为Q ...

  2. 关于VS2017+Qt5.6.3(msvc2015_64)联合编程Qt project settings界面没有ok,cancel选项的问题

    如题,我在项目开发的过程中,需要添加数据库模块SQL,然后发现VS上QT project settings选项中不能修改添加的模块,也就是对应QT creator中的在.pro文件中添加一句:QT + ...

  3. 为什么qt成为c++界面编程的第一选择

    为什么qt成为c++界面编程的第一选择 一.前言 为什么现在QT越来越成为界面编程的第一选择,笔者从事qt界面编程已经有接近8年,在这之前我做C++界面都是基于MFC,也做过5年左右.当时为什么会从M ...

  4. qt designer设置界面是label中文字与文本框对齐设置

    往往在使用 qt designer布置界面时,添加的label和文本框中是直接从工具箱中拖进去的,由于每个控件尺寸大小不一,就会造成label中的文字相对于文本框比较较偏上,看下面未经调整的直接效果 ...

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

    原文:WPF系列教程--(一)仿TIM QQ界面 - 简书 TIM QQ 我们先来看一下TIM QQ长什么样,整体可以将界面分为三个部分 TIM QQ 1. 准备 阅读本文假设你已经有XAML布局的基 ...

  6. iOS 实现QQ界面

    应师傅要求编写个QQ界面来不吝赐教下我的代码问题. 编写个QQ界面.有三个组,每一个组有人.并显示在线不在线. 先看一下效果图 这里省了事由于我的图片仅仅用了一张.假设要依据人的不同设置,仅仅要在ce ...

  7. 为什么 qt 成为 c++ 界面编程的第一选择?

    为什么qt成为c++界面编程的第一选择 一.前言 为什么现在QT越来越成为界面编程的第一选择,笔者从事qt界面编程已经有接近8年,在这之前我做C++界面都是基于MFC,也做过5年左右.当时为什么会从M ...

  8. 循序渐进实现仿QQ界面(一):园角矩形与双缓冲贴图窗口

    印象里仿QQ界面的程序应该有很多,搜了一下,虽然出来一大堆,排除了重复的,却只有两三个,没我想象的好.经常看到CSDN上有人问,QQ这个功能怎么实现,那个界面怎么实现,归纳了一下,决定写这么一个仿QQ ...

  9. 循序渐进实现仿QQ界面(三):界面调色与控件自绘

    本篇讲述如何进行界面调色.界面调色一般有两种方法,调色板和HSL色彩变换.调色板局限于256色,这里不采用,因此用HSL色彩变换实现.首先要了解一下什么是HSL色彩空间,完整且详尽的知识请到维基百科去 ...

随机推荐

  1. js内置构造函数属性修改问题

    在学习js原型时遇到一个问题,Array,Object等内置构造函数部分属性无法修改,我猜测可能是因为浏览器实现的原因造成的. 1.修改name属性无效. <script type=" ...

  2. Backtrack无线攻防(很任性的一篇)

    首先你得有一个backtrack操作系统 然后还得花钱买一个无线网卡,最好是Intel的,还有要是USB接口的,可能是因为其他接口我不会接.

  3. Golang中的信号处理

    信号类型 个平台的信号定义或许有些不同.下面列出了POSIX中定义的信号. Linux 使用34-64信号用作实时系统中. 命令 man 7 signal 提供了官方的信号介绍. 在POSIX.1-1 ...

  4. 《Linux调优工具oprofile的演示分析》

    根据CPU架构oprofile采样的触发有两种模式:1) NMI模式: 利用处理器的performance counter功能, 指定counter的类型type和累进数量count. 比如 type ...

  5. 利用Photoshop减小照片景深

    有时我们想拍出景深较小的照片,可是因为拍摄设备不支持,或者拍摄时没有调好參数,效果不理想. 这时能够借助Photoshop进行后期调整.一定程度上弥补缺陷.用到的主要是PS中的滤镜-->模糊-- ...

  6. 【Java系列】Eclipse与Tomcat

    描述 本篇文章简要讲述Eclipse和Tomcat搭建,具体包括如下内容: (1)Eclipse安装和汉化 (2)Tomcat安装和CATALIAN_HOME变量配置 (3)在Eclipse中配置To ...

  7. 如何导入外部的源码到eclipse中

    用struts,spring等框架开发也有两年的时间了,一直很少去阅读其源码,每次在eclipse编码的过程中想要看某一个类的源码,ctrl点击总是出现source not found的提示,也没有去 ...

  8. 自学Zabbix3.4-资产清单inventory

    当监控的设备越来越多,有时候搞不清楚哪台服务器.网络设备是什么配置,abbix专门设置了设备资产管理功能.我们创建或者编辑主机的时候,可以看到清单(inventory)功能.里面大致包含mac地址.硬 ...

  9. 总结一下现在关于Design Support Library的几个博客

    原文转载:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0713/3179.html 关于Design Support Libr ...

  10. Scrapy爬虫实例——校花网

    学习爬虫有一段时间了,今天使用Scrapy框架将校花网的图片爬取到本地.Scrapy爬虫框架相对于使用requests库进行网页的爬取,拥有更高的性能. Scrapy官方定义:Scrapy是用于抓取网 ...