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色彩空间,完整且详尽的知识请到维基百科去 ...
随机推荐
- win10解决乱码问题
Unicode是Unicode.org制定的编码标准,目前得到了绝大部分操作系统和编程语言的支持.Unicode.org官方对Unicode的定义是:Unicode provides a unique ...
- day5、文件乱码怎么解决
1.1 Linux下,如何将一个乱码的文件进行重命名 方法一: 命令格式:mv $(ls |egrep "[^a-zA-Z0-9.-]") tandao.tx [root@nb ...
- 阅读《Android 从入门到精通》(12)——自己主动完毕文本框
自己主动完毕文本框(AutoCompleteTextView) java.lang.Object; android.view.View; android.view.TextView; android. ...
- 版本号控制-GitHub
前面几篇文章.我们介绍了Git的基本使用方法及Gitserver的搭建.本篇文章来学习一下怎样使用GitHub. GitHub是开源的代码库以及版本号控制库,是眼下使用网络上使用最为广泛的服务,Git ...
- 使用storyboard设置button边框属性(颜色,宽度,圆角)
通常使用Category时.仅仅能加入方法,不可加入属性.可是在使用Storyboard时我们可能会使用到keyPath,这里设置的key都须要是所设置视图的属性值.而且类型有所限制. 比如:我如今有 ...
- 基于FPGA的图像显示
基于FPGA的图像显示 作者:lee神 这几天一直在调试FPGA的图像显示系统,今天终于成功,图像不在闪烁,也不再边框缺失. 基于FPGA的图像处理的第一课应该是基于FPGA的图像显示,只有图像正常显 ...
- 自学Zabbix3.10.1.3-事件通知Notifications upon events-媒介类型Jabber
自学Zabbix3.10.1.3-事件通知Notifications upon events-媒介类型Jabber Jabber有第三方插件,能让Jabber用户和MSN.YahooMessager. ...
- 本地IIS
一,搭建IIS 要建立本地的IIS需要进行以下操作(包括显示.NET): 开始=>控制面板(查看方式为类别)=>程序=>程序和功能=>左边的打开或关闭Windows功能选中以下 ...
- mybatis的#{}占位符和${}拼接符的区别
#{}占位符:占位 如果传入的是基本类型,那么#{}中的变量名称可以随意写 如果传入的参数是pojo类型,那么#{}中的变量名称必须是pojo中的属性.属性.属性- ${}拼接符:字符串原样拼接 如果 ...
- 工作随笔——自动重发的凶手--feign
公司使用的feign(https://github.com/OpenFeign/feign)作为http客户端. 开发时debug后端程序,发现同一个请求会多次收到. 为了判断是谁在搞鬼,在客户端和服 ...