1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Qt实现360安全卫士主界面(中央窗体)

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

时间:2024-01-23 01:47:46

相关推荐

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

中央窗口可以分为左右两部分,左半边由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"));

本文转自:/s/blog_a6fb6cc90101e8lv.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。