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色彩空间,完整且详尽的知识请到维基百科去 ...
随机推荐
- java-8u151-64安装与配置环境变量
去oracle官网下载 java jdk for developments(最新发布的java9与java8有很大差别,选择8就够用了) 我是装在默认的C盘里的,直接配置环境变量了 新建JAVA_HO ...
- spring boot + mybatis + hikaricp + swagger2 + jasypt
好久没写博客了记录下写过的东西,别到时候又忘了 文章前提:前面开发项目的时候数据池一直用的阿里的druid,这个数据池吧也不能说它不好,为什么现在想改成hikaricp数据池呢,完全是实用项目需要.d ...
- LDA数学八卦笔记(一)Gamma函数
Technorati Tags: LDA主题模型
- Git~GitLab当它是一个CI工具时
CI我们都知道,它是持续集成的意思,主要可以自动处理包括编译,测试,发布等一系列的过程,而GitLab也同样包含了这些功能,我们可以通过pipeline很容易的实现一个软件从编译,测试,发布的自动化过 ...
- python文件和文件夹訪问File and Directory Access
http://blog.csdn.net/pipisorry/article/details/47907589 os.path - Common pathname manipulations 都是和路 ...
- java_多态
一.多态(对象的多种形态)1.引用的多态 父类的引用指向本类的对象 父类的引用指向子类的对象(引用多态) (不允许子类对象指向父类)2.方法多态 创建本类对象时调用的方法为本类的方法 创建子类对象时, ...
- jQuery里使用setinterval
如果第一个参数是一个已写好的函数而不是匿名代码块,一定不要加引号,直接var ** = setinterval{myFunction ,500},只能这样,加括号会直接只调用一次,自然不行,加引号和括 ...
- Python笔记·第九章—— 函数 (一)
一.函数的作用 函数可以让我们代码结构更清晰,而且避免了代码的重复,冗余,使一段代码或者功能可以反复的被调用,大大提高了开发效率 二.函数的定义 def 函数名(参数1,参数2,*args,默认参数, ...
- redis中与key相关的命令
1.简单描述 redis本质上是一个key-value db,value可以有多种类型(string.hash.set.sorted set.list等),本章节不讲这些类型的命令,这里是讲跟key相 ...
- 【HTML5】input元素type属性值
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...