中央窗口可以分为左右两部分,左半边由QWidget实现,包含三个QLabel,一个QPushButton,QLabel主要用来显示图片,文本信息,还有一个按钮负责“立即体验”。

右半边由QSplitter实现分割窗口,每个QWidget又包含不同的组件。

整体部分由QSplitter将左半边的QWidget与右半边的QSplitter分割,分割线均不可拖动。

#pragma once#include <QWidget>
#include <QSplitter>
#include <QToolButton>
#include <QPushButton>
#include <QLabel>
#include <QProgressBar>
#include <QPainter>
#include <QPen>
#include <QHBoxLayout>
#include <QEvent>
#include <QVBoxLayout>
class content_widget : public QWidget
{Q_OBJECTpublic:explicit content_widget(QWidget *parent=0);~content_widget();void translateLanguage();
private:void initLeft();     //主窗口左边void initRight();void initRightTop(); //主窗口右上部void initRightCenter();void initRightCenterFuntion();void initRightButton();protected:bool eventFilter(QObject *obj, QEvent *event);private:QSplitter *main_splitter;QWidget *left_widget;QLabel *label;QLabel *suggest_label;QLabel *system_safe_label;QPushButton *power_button; //立即体验按钮QSplitter *right_splitter;QWidget *right_top_widget;QPushButton *login_button; //登录我的360账号QLabel *priv_label;        //黄砖图标QLabel *info_label;        //开启炫动卫视图标QLabel *privilege_label;   //专享特权QPushButton *register_button; //10秒免费注册QPushButton *safe_button;     //特权领360炫动logoQPushButton *tab_button;      //领取炫动导航功能图标QPushButton *pet_button;      //宠物安仔精灵QPushButton *lottery_button;  //按在抱枕大派送QPushButton *cloud_five_button;  //5G云盘QPushButton *caipiao_button;     //彩票QWidget *right_center_widget;QToolButton *fireproof_button;    //360防火墙QToolButton *triggerman_button;   //360保镖QToolButton *net_shop_button;     //网购先赔QLabel *line_label_1;             //虚线QLabel *line_label_2;             //虚线QWidget *right_center_funtion_widget;QLabel *funtion_label;             //功能大全QPushButton *more_button;          //更多QList<QToolButton *> button_list;  //按钮容器QWidget *right_botton_widget;QLabel *icon_label;                //云图标QLabel *connect_label;             //成功连接云安全QLabel *version_label;             //版本号QPushButton *version_button;       //版本升级
};
#include "content_widget.h"content_widget::content_widget(QWidget *parent): QWidget(parent)
{//初始化setAttribute(Qt::WA_TranslucentBackground);main_splitter = new QSplitter();main_splitter->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);main_splitter->setOrientation(Qt::Horizontal);           //水平线main_splitter->setHandleWidth(1);                        //设置分界线的宽度initLeft();initRight();initRightTop();initRightCenter();initRightCenterFuntion();initRightButton();right_splitter->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);right_splitter->setOrientation(Qt::Vertical);right_splitter->setHandleWidth(1);right_top_widget->setFixedSize(250, 130);right_center_widget->setFixedSize(250, 90);right_botton_widget->setFixedSize(250, 15);right_splitter->addWidget(right_top_widget);right_splitter->addWidget(right_center_widget);right_splitter->addWidget(right_center_funtion_widget);right_splitter->addWidget(right_botton_widget);main_splitter->addWidget(left_widget);main_splitter->addWidget(right_splitter);for (int i = 0; i <right_splitter->count(); i++){//分界线是QSplitterHandle 类对象//如果有多条分界线,怎么操作第一条分界线QSplitterHandle *handle = right_splitter->handle(i);handle->setEnabled(false);}//主分割只有一条分界线QSplitterHandle *handle = main_splitter->handle(1);handle->setEnabled(false);//水平QHBoxLayout *main_layout = new QHBoxLayout();main_layout->addWidget(main_splitter);main_layout->setSpacing(0);main_layout->getContentsMargins(0, 0, 0, 0);setLayout(main_layout);translateLanguage();}content_widget::~content_widget()
{
}
void content_widget::initLeft()
{left_widget = new QWidget();label = new QLabel();suggest_label = new QLabel();system_safe_label = new QLabel();power_button = new QPushButton();left_widget->resize(650, 500);QPixmap label_pixmap(":/contentWidget/computer");label->setPixmap(label_pixmap);label->setFixedSize(label_pixmap.size());QFont suggest_font = suggest_label->font();suggest_font.setPointSize(12);suggest_font.setBold(true);suggest_label->setFont(suggest_font);suggest_label->setObjectName("grayLabel");QFont system_safe_font = system_safe_label->font();system_safe_font.setBold(true);system_safe_label->setFont(system_safe_font);system_safe_label->setObjectName("grayLabel");QPixmap pixmap(":/contentWidget/power");power_button->setIcon(pixmap);power_button->setIconSize(pixmap.size());power_button->setFixedSize(180, 70);power_button->setObjectName("greenButton");//改变字体大小QFont power_font = power_button->font();power_font.setPointSize(16);power_button->setFont(power_font);//排版QVBoxLayout *v_layout = new QVBoxLayout();v_layout->addWidget(suggest_label);v_layout->addWidget(system_safe_label);v_layout->addStretch();v_layout->setSpacing(15);v_layout->setContentsMargins(0, 20, 0, 0);QHBoxLayout *h_layout = new QHBoxLayout();h_layout->addWidget(label, 0, Qt::AlignTop);h_layout->addLayout(v_layout);h_layout->addStretch();h_layout->setSpacing(20);h_layout->setContentsMargins(30, 20, 0, 0);QVBoxLayout *main_layout = new QVBoxLayout();main_layout->addLayout(h_layout);main_layout->addWidget(power_button, 0, Qt::AlignCenter);main_layout->addStretch();main_layout->setSpacing(0);main_layout->setContentsMargins(0, 0, 0, 0);left_widget->setLayout(main_layout);
}
void content_widget::initRight()
{right_splitter = new QSplitter();
}
void content_widget::initRightTop()
{right_top_widget = new QWidget();login_button = new QPushButton();priv_label = new QLabel();info_label = new QLabel();privilege_label = new QLabel();register_button = new QPushButton();safe_button = new QPushButton();tab_button = new QPushButton();pet_button = new QPushButton();lottery_button = new QPushButton();cloud_five_button = new QPushButton();caipiao_button = new QPushButton();login_button->setFixedSize(240, 60);login_button->setObjectName("loginButton");QFont login_font = login_button->font();login_font.setBold(true);login_font.setPointSize(12);login_button->setFont(login_font);priv_label->setPixmap(QPixmap(":/contentWidget/priv"));QPixmap safe_pixmap(":/contentWidget/360");safe_button->setIcon(safe_pixmap);safe_button->setFixedSize(safe_pixmap.size());QPixmap tab_pixmap(":/contentWidget/tab");tab_button->setIcon(tab_pixmap);tab_button->setFixedSize(tab_pixmap.size());QPixmap pet_pixmap(":/contentWidget/pet");pet_button->setIcon(pet_pixmap);pet_button->setFixedSize(tab_pixmap.size());QPixmap lottery_pixmap(":/contentWidget/lottery");lottery_button->setIcon(lottery_pixmap);lottery_button->setFixedSize(lottery_pixmap.size());QPixmap cloud_five_pixmap(":/contentWidget/cloud_five");cloud_five_button->setIcon(cloud_five_pixmap);cloud_five_button->setFixedSize(cloud_five_pixmap.size());QPixmap caipiao_pixmap(":/contentWidget/caipiao");caipiao_button->setIcon(caipiao_pixmap);caipiao_button->setFixedSize(caipiao_pixmap.size());//设置鼠标点击时的状态register_button->setCursor(Qt::PointingHandCursor);safe_button->setCursor(Qt::PointingHandCursor);tab_button->setCursor(Qt::PointingHandCursor);pet_button->setCursor(Qt::PointingHandCursor);lottery_button->setCursor(Qt::PointingHandCursor);cloud_five_button->setCursor(Qt::PointingHandCursor);caipiao_button->setCursor(Qt::PointingHandCursor);//按钮的样式register_button->setObjectName("blueButton");safe_button->setObjectName("transparentButton");tab_button->setObjectName("transparentButton");pet_button->setObjectName("transparentButton");lottery_button->setObjectName("transparentButton");cloud_five_button->setObjectName("transparentButton");caipiao_button->setObjectName("transparentButton");//布局QHBoxLayout *login_layout = new QHBoxLayout();login_layout->addWidget(login_button);login_layout->addStretch();           //按比例分配空余空间login_layout->setContentsMargins(15, 0, 0, 0);QHBoxLayout *register_layout = new QHBoxLayout();register_layout->addStretch();register_layout->addWidget(priv_label);register_layout->addWidget(info_label);register_layout->addWidget(register_button);register_layout->addStretch();register_layout->setSpacing(5);register_layout->setContentsMargins(0, 0, 0, 0);QHBoxLayout *privilege_layout = new QHBoxLayout();privilege_layout->addStretch();privilege_layout->addWidget(privilege_label);privilege_layout->addWidget(safe_button);privilege_layout->addWidget(tab_button);privilege_layout->addWidget(pet_button);privilege_layout->addWidget(lottery_button);privilege_layout->addWidget(cloud_five_button);privilege_layout->addWidget(caipiao_button);privilege_layout->addStretch();privilege_layout->setSpacing(8);privilege_layout->setContentsMargins(0, 0, 0, 0);QVBoxLayout *main_layout = new QVBoxLayout();main_layout->addStretch();main_layout->addLayout(login_layout);main_layout->addLayout(register_layout);main_layout->addLayout(privilege_layout);main_layout->addStretch();main_layout->setSpacing(5);main_layout->setContentsMargins(10, 10, 10, 10);//两信号right_top_widget->setLayout(main_layout);}
void content_widget::initRightCenter()
{right_center_widget = new QWidget();fireproof_button = new QToolButton();triggerman_button = new QToolButton();net_shop_button = new QToolButton();line_label_1 = new QLabel();line_label_2 = new QLabel();line_label_1->setFixedWidth(10);line_label_2->setFixedWidth(10);line_label_1->installEventFilter(this);line_label_2->installEventFilter(this);fireproof_button->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);triggerman_button->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);net_shop_button->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);QPixmap fireproof_pixmap(":/contentWidget/fireproof");fireproof_button->setIcon(fireproof_pixmap);fireproof_button->setIconSize(fireproof_pixmap.size());fireproof_button->setFixedSize(fireproof_pixmap.width() + 25, fireproof_pixmap.height() + 25);QPixmap triggerman_pixmap(":/contentWidget/triggerman");triggerman_button->setIcon(triggerman_pixmap);triggerman_button->setIconSize(triggerman_pixmap.size());triggerman_button->setFixedSize(triggerman_pixmap.width() + 25, triggerman_pixmap.height() + 25);QPixmap net_shop_pixmap(":/contentWidget/net_shop");net_shop_button->setIcon(net_shop_pixmap);net_shop_button->setIconSize(net_shop_pixmap.size());net_shop_button->setFixedSize(net_shop_pixmap.width() + 25, net_shop_pixmap.height() + 25);fireproof_button->setObjectName("transparentToolButton");triggerman_button->setObjectName("transparentToolButton");net_shop_button->setObjectName("transparentToolButton");QHBoxLayout *h_layout = new QHBoxLayout();h_layout->addWidget(fireproof_button);h_layout->addWidget(line_label_1);h_layout->addWidget(triggerman_button);h_layout->addWidget(line_label_2);h_layout->addWidget(net_shop_button);h_layout->setSpacing(0);h_layout->setContentsMargins(0, 0, 0, 0);right_center_widget->setLayout(h_layout);
}
void content_widget::initRightCenterFuntion()
{right_center_funtion_widget = new QWidget();funtion_label = new QLabel();more_button = new QPushButton();QFont funtion_font = funtion_label->font();funtion_font.setBold(true);funtion_label->setFont(funtion_font);funtion_label->setObjectName("infoLabel");more_button->setFixedSize(50, 25);more_button->setObjectName("blueButton");more_button->setCursor(Qt::PointingHandCursor);QHBoxLayout *h_layout = new QHBoxLayout();h_layout->addWidget(funtion_label);h_layout->addStretch();h_layout->addWidget(more_button);h_layout->setSpacing(0);h_layout->setContentsMargins(10, 5, 0, 0);QStringList string_list;string_list << ":/contentWidget/recovery" << ":/contentWidget/moblie" << ":/contentWidget/game_box" << ":/contentWidget/desktop"<< ":/contentWidget/net_repair" << ":/contentWidget/auto_run" << ":/contentWidget/net_speed" << ":/contentWidget/net_pretext"<< ":/contentWidget/first_add";//网格布局QGridLayout *grid_layout = new QGridLayout();for (int i = 0; i<string_list.size(); i++){QToolButton *tool_button = new QToolButton();tool_button->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);QPixmap button_pixmap(string_list.at(i));tool_button->setIcon(button_pixmap);tool_button->setIconSize(button_pixmap.size());tool_button->setFixedSize(button_pixmap.width() + 50, button_pixmap.height() + 35);tool_button->setObjectName("functionButton");button_list.append(tool_button);grid_layout->addWidget(tool_button, i / 3, i % 3);}grid_layout->setSpacing(0);grid_layout->setContentsMargins(5, 0, 5, 5);QVBoxLayout *v_layout = new QVBoxLayout();v_layout->addLayout(h_layout);v_layout->addLayout(grid_layout);v_layout->addStretch();v_layout->setSpacing(10);v_layout->setContentsMargins(0, 0, 0, 0);right_center_funtion_widget->setLayout(v_layout);}
void content_widget::initRightButton()
{right_botton_widget = new QWidget();icon_label = new QLabel();connect_label = new QLabel();version_label = new QLabel();version_button = new QPushButton();QPixmap label_pixmap(":/contentWidget/cloud");icon_label->setPixmap(label_pixmap);icon_label->setFixedSize(label_pixmap.size());QPixmap pixmap(":/contentWidget/version");version_button->setIcon(pixmap);version_button->setIconSize(pixmap.size());version_button->setObjectName("transparentButton");QHBoxLayout *botton_layout = new QHBoxLayout();botton_layout->addWidget(icon_label);botton_layout->addWidget(connect_label);botton_layout->addStretch();botton_layout->addWidget(version_label);botton_layout->addWidget(version_button);botton_layout->setSpacing(5);botton_layout->setContentsMargins(10, 0, 10, 0);right_botton_widget->setLayout(botton_layout);}
void content_widget::translateLanguage()
{suggest_label->setText(tr("suggest"));system_safe_label->setText(tr("system safe"));power_button->setText(tr("power"));login_button->setText(tr("login home"));info_label->setText(tr("show beautifull icon"));register_button->setText(tr("register"));privilege_label->setText(tr("privilege power"));fireproof_button->setText(tr("fireproof"));triggerman_button->setText(tr("triggerman"));net_shop_button->setText(tr("net shop"));funtion_label->setText(tr("function"));more_button->setText(tr("more"));button_list.at(0)->setText(tr("recovery"));button_list.at(1)->setText(tr("mobile"));button_list.at(2)->setText(tr("game box"));button_list.at(3)->setText(tr("desktop"));button_list.at(4)->setText(tr("net repair"));button_list.at(5)->setText(tr("auto run"));button_list.at(6)->setText(tr("net speed"));button_list.at(7)->setText(tr("net pretext"));button_list.at(8)->setText(tr("first add"));connect_label->setText(tr("connect success"));version_label->setText(tr("version"));
}
bool content_widget::eventFilter(QObject *obj, QEvent *event)
{if (obj == line_label_1 || obj == line_label_2){if (event->type() == QEvent::Paint){int label_height_1 = line_label_1->height();int label_width_1 = line_label_1->width();QPainter painter(line_label_1);painter.setPen(QPen(QColor(220, 220, 220), 1, Qt::DashLine));painter.drawLine(label_width_1 / 2, 0, label_width_1 / 2, label_height_1);int label_height_2 = line_label_2->height();int label_width_2 = line_label_2->width();QPainter painter2(line_label_2);painter2.setPen(QPen(QColor(220, 220, 220), 1, Qt::DashLine));painter2.drawLine(label_width_2 / 2, 0, label_width_2 / 2, label_height_2);}}return QWidget::eventFilter(obj, event);
}

小技巧:

当一次需要创建多个按钮时,我们可以通过容器QStringList将图片路径写入

eg:

QStringList string_list;string_list << ":/contentWidget/recovery" << ":/contentWidget/moblie" << ":/contentWidget/game_box" << ":/contentWidget/desktop"<< ":/contentWidget/net_repair" << ":/contentWidget/auto_run" << ":/contentWidget/net_speed" << ":/contentWidget/net_pretext"<< ":/contentWidget/first_add";
        button_list.at(0)->setText(tr("recovery"));button_list.at(1)->setText(tr("mobile"));button_list.at(2)->setText(tr("game box"));button_list.at(3)->setText(tr("desktop"));button_list.at(4)->setText(tr("net repair"));button_list.at(5)->setText(tr("auto run"));button_list.at(6)->setText(tr("net speed"));button_list.at(7)->setText(tr("net pretext"));button_list.at(8)->setText(tr("first add"));

本文转自:http://blog.sina.com.cn/s/blog_a6fb6cc90101e8lv.html

Qt实现360安全卫士主界面(中央窗体)相关推荐

  1. Qt之实现360安全卫士主界面

    Qt之实现360安全卫士主界面(一) 该博文只是模仿360安全卫士的主界面,并不牵涉其中的任何业务功能:重在个人见解以及界面实现:关于360安全卫士的主界面,我想大家都见到过,毕竟基本大部分人都安装过 ...

  2. Qt之实现360安全卫士主界面(转)

    Qt之实现360安全卫士主界面(一) 该博文只是模仿360安全卫士的主界面,并不牵涉其中的任何业务功能:重在个人见解以及界面实现:关于360安全卫士的主界面,我想大家都见到过,毕竟基本大部分人都安装过 ...

  3. Qt之实现360安全卫士主界面(四)

    这篇博文主要讲解360安全卫士标题栏的创建.关于标题栏,我想大家应该都非常熟悉了,其主要包括窗口关闭.最大化/还原.最小化等按钮:但是标题栏的这些按钮都是非常有特色的. 在我写这篇博文之前,我就已经完 ...

  4. Qt之实现360安全卫士主界面(一)

    转自:http://www.cnblogs.com/appsucc/archive/2012/03/14/2395657.html 该博文只是模仿360安全卫士的主界面,并不牵涉其中的任何业务功能:重 ...

  5. Qt之实现360安全卫士主界面(三)

    这篇博文主要讲述360安全卫士工具栏的创建:工具栏由图片和文字组成,当鼠标移到工具栏按钮上时,需要有些特征表达该现象,如背景色变化等:当然鼠标单击工具栏按钮时,同样也要有些特征,并且这个特征区别于鼠标 ...

  6. qmainwindow 标题栏_Qt之360安全卫士主界面(标题栏)

    其实网上有过360界面一些小细节的实现,基本的也都比较简单,项目完事,闲来无事,就按照自己电脑的360安全卫士9.1做了一个界面,包括托盘.最小化.最大化.界面风格样式美化等! 效果如下: 有人可能会 ...

  7. Qt实现360安全卫士登录界面

    在分享之前,我们先看截图,用事实说话,有图有真相! 通过点击底部栏的新浪,人人按钮来进行3个界面的互相切换,进行用户删除时,自定义的QDialog用于和用户交互,通过exec()可进入堵塞状态. 界面 ...

  8. 【360安全卫士显示界面异常解决】

    360安全卫士显示界面异常解决 问题/解决 首先打开360安全卫士,单击三横杠 选择设置 选择界面缩放,开启主界面自动缩放功能,点击确定 4.此时360安全卫士界面就显示正常了

  9. Qt实现360安全卫士9.2

    无私的分享.交流是我的宗旨,欢迎留言.欢迎讨论.欢迎批评指正. Qt实现360安全卫士9.1(旧版本): http://bbs.csdn.net/topics/390508293 Qt实现360安全卫 ...

最新文章

  1. win10 环境变量配置 如何在命令行运行php文件
  2. 分布式监控报警平台Centreon之:Centreon依赖安装
  3. 下一代Hotmail和MSN Messenger最新界面截图
  4. 【C#】ADO .Net Entities Framework在WPF TreeView中的应用
  5. 中国人民银行:关于防范代币发行融资风险的公告
  6. 《Python核心编程 》笔记-第二章+第三章
  7. 综合实例_管线综合支吊架施工实例赏析,工艺流程全面
  8. 二十四、爬取古诗网中的100首古诗文
  9. 使用@host获得宿主元素注入器里注入的内容
  10. 7-3 棋盘覆盖 (10 分)(思路加详解)Come baby
  11. CentOS添加并挂载新硬盘
  12. matlab2c使用c++实现matlab函数系列教程-flipud函数
  13. 博瑞GE博越缤瑞缤越车机安装任意APP第三方软件教程
  14. mysql注入转义绕过_SQL注入防御绕过——二次注入
  15. java调用通用对话框_使用通用对话框
  16. PCIe简介及引脚定义
  17. MySQL基础命令-学习的时候记录一下
  18. 爬取百度 《一人之下》 贴吧
  19. 怎么判断机械表上满弦_腕表冷知识,知道两个以上算我输!
  20. 【强化学习】Q-Learning算法详解以及Python实现【80行代码】

热门文章

  1. 27个优秀APP加载动画与进度条设计案例
  2. QQ登陆出现空白页面 解决办法
  3. MPLAB X IDE使用技巧
  4. 锋利的戴德金“刀”并没有耗尽直线上所有的几何点
  5. debug版本和release版本的区别
  6. 电脑关机更新了关闭自动更新
  7. 20180416-F · Global Mortality · ggplot2 地图 热力图 条形图 · R 语言数据可视化 案例 源码
  8. linux 查找文件夹中含有文件的个数
  9. 来上海15年,月薪 4 万是一种怎样的感受?
  10. 2020最新swoole视频教程推荐(从入门到高级)