Qt实现QQ界面
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界面的更多相关文章
- swift:用UITabBarController、UINavigationController、模态窗口简单的搭建一个QQ界面
搭建一个QQ界面其实是一个很简单的实现,需要几种切换视图的控制器组合一起使用,即导航控制器.标签栏控制器.模态窗口.其中,将标签栏控制器设置为window的rootViewController,因为Q ...
- 关于VS2017+Qt5.6.3(msvc2015_64)联合编程Qt project settings界面没有ok,cancel选项的问题
如题,我在项目开发的过程中,需要添加数据库模块SQL,然后发现VS上QT project settings选项中不能修改添加的模块,也就是对应QT creator中的在.pro文件中添加一句:QT + ...
- 为什么qt成为c++界面编程的第一选择
为什么qt成为c++界面编程的第一选择 一.前言 为什么现在QT越来越成为界面编程的第一选择,笔者从事qt界面编程已经有接近8年,在这之前我做C++界面都是基于MFC,也做过5年左右.当时为什么会从M ...
- qt designer设置界面是label中文字与文本框对齐设置
往往在使用 qt designer布置界面时,添加的label和文本框中是直接从工具箱中拖进去的,由于每个控件尺寸大小不一,就会造成label中的文字相对于文本框比较较偏上,看下面未经调整的直接效果 ...
- WPF系列教程——(一)仿TIM QQ界面 - 简书
原文:WPF系列教程--(一)仿TIM QQ界面 - 简书 TIM QQ 我们先来看一下TIM QQ长什么样,整体可以将界面分为三个部分 TIM QQ 1. 准备 阅读本文假设你已经有XAML布局的基 ...
- iOS 实现QQ界面
应师傅要求编写个QQ界面来不吝赐教下我的代码问题. 编写个QQ界面.有三个组,每一个组有人.并显示在线不在线. 先看一下效果图 这里省了事由于我的图片仅仅用了一张.假设要依据人的不同设置,仅仅要在ce ...
- 为什么 qt 成为 c++ 界面编程的第一选择?
为什么qt成为c++界面编程的第一选择 一.前言 为什么现在QT越来越成为界面编程的第一选择,笔者从事qt界面编程已经有接近8年,在这之前我做C++界面都是基于MFC,也做过5年左右.当时为什么会从M ...
- 循序渐进实现仿QQ界面(一):园角矩形与双缓冲贴图窗口
印象里仿QQ界面的程序应该有很多,搜了一下,虽然出来一大堆,排除了重复的,却只有两三个,没我想象的好.经常看到CSDN上有人问,QQ这个功能怎么实现,那个界面怎么实现,归纳了一下,决定写这么一个仿QQ ...
- 循序渐进实现仿QQ界面(三):界面调色与控件自绘
本篇讲述如何进行界面调色.界面调色一般有两种方法,调色板和HSL色彩变换.调色板局限于256色,这里不采用,因此用HSL色彩变换实现.首先要了解一下什么是HSL色彩空间,完整且详尽的知识请到维基百科去 ...
随机推荐
- Kotlin 一个好用的新功能:Parcelize
在开发中,如果有需要用到序列化和反序列化的操作,就会用到 Serializable 或者 Parcelable,它们各有优缺点,会适用于不同的场景. Serializable 的优点是实现简单,你只需 ...
- ssm开发关于web.xml配置
<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" ...
- 班级博客客户端Beta阶段发布说明
班级博客客户端Beta阶段发布说明 NewTeam 2017/12/18 项目 博客园班级博客Android客户端 目录 发布方式和发布地址 新功能 修复的缺陷 对运行环境的要求 安装方法 已知的问题 ...
- Android酷炫有用的开源框架
一.代码库 1.from 代码家 整理比較好的源代码连接 一.兼容类库 ActionBarSherlock : Action Bar是Android 3.0后才開始支持的,ActionBarSher ...
- Linux网络编程--wireshark分析TCP包头的格式
摘要: 本文简介了TCP面向连接理论知识,具体讲述了TCP报文各个字段含义.并从Wireshark俘获分组中选取TCP连接建立相关报文段进行分析. 一.概述 TCP是面向连接的可靠传输 ...
- 蓝牙核心技术概述(五):蓝牙协议规范(irOBEX、BNEP、AVDTP、AVCTP)
关键词:蓝牙核心技术协议 irDA BNEP AVDTP AVCTP 作者:xubin341719(欢迎转载,请注明作者,请尊重版权,谢谢! )欢迎指正错误,共同学习.共同进步!! 下载链接:Bl ...
- iOS 6.0中UIViewController被弃用的一些方法
郝萌主倾心贡献.尊重作者的劳动成果,请勿转载. 假设文章对您有所帮助,欢迎给作者捐赠,支持郝萌主,捐赠数额任意.重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载:点我传送 概念:de ...
- (转)rabbitMQ基础知识及命令语句
摘要: 整理rabbitmq的用户管理相关知识,备忘 安装最新版本的rabbitmq(3.3.1),并启用management plugin后,使用默认的账号guest登陆管理控制台,却提示登陆失败. ...
- angular过滤器基本用法
1.过滤器主要用于数据的筛选,可以直接在模板使用 语法: {{expression | filter}} {{expression | filter | filter2}} {{expression ...
- MySQL的存储引擎与日志说明
1.1 存储引擎的介绍 1.1.1 文件系统存储 文件系统:操作系统组织和存取数据的一种机制.文件系统是一种软件. 类型:ext2 3 4 ,xfs 数据. 不管使用什么文件系统,数据内容不会变化, ...