现在的位置: 首页 > 综合 > 正文

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

2013年02月07日 ⁄ 综合 ⁄ 共 17825字 ⁄ 字号 评论关闭

   再说主界面除标题栏、功能栏外的中央窗体,分为左右两部分!

   左半边几面由QWidget实现,包含三个QLabel、一个QPushButton,QLabel主要显示图片、文本信息,另外一个按钮就负责“立即体检”了。

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

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

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

    代码如下:

#include "content_widget.h"

ContentWidget::ContentWidget(QWidget *parent)
 :QWidget(parent)
{
    QPalettepalette;
 palette.setBrush(QPalette::Window,QBrush(Qt::white));
   setPalette(palette);
   setAutoFillBackground(true);
 
 main_splitter = new QSplitter();
 main_splitter->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);
 main_splitter->setOrientation(Qt::Horizontal);
 main_splitter->setHandleWidth(1);
 main_splitter->setStyleSheet("QSplitter::handle{background:lightgray;}");

 this->initLeft();
 this->initRight();
 this->initRightTop();
 this->initRightCenter();
 this->initRightCenterFunction();
 this->initRightBottom();

 right_splitter->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed);
 right_splitter->setOrientation(Qt::Vertical);
 right_splitter->setHandleWidth(1);
 right_splitter->setStyleSheet("QSplitter::handle{background:lightgray;}");

 right_top_widget->setFixedSize(250,130);
 right_center_widget->setFixedSize(250,90);
 right_bottom_widget->setFixedSize(250,30);
 right_splitter->addWidget(right_top_widget);
 right_splitter->addWidget(right_center_widget);
 right_splitter->addWidget(right_center_function_widget);
 right_splitter->addWidget(right_bottom_widget);

 main_splitter->addWidget(left_widget);
 main_splitter->addWidget(right_splitter);

 //禁止拖动
 for(int i = 0; icount();i++)
 {
  QSplitterHandle *handle =right_splitter->handle(i);
  handle->setEnabled(false);
 }

 for(int i = 0; icount();i++)
 {
  QSplitterHandle *handle =main_splitter->handle(i);
  handle->setEnabled(false);
 }

 QHBoxLayout *main_layout = newQHBoxLayout();
 main_layout->addWidget(main_splitter);
 main_layout->setSpacing(0);
 main_layout->setContentsMargins(0, 0, 0,0);

 setLayout(main_layout);
 
 this->translateLanguage();
}

void ContentWidget::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);

 QPixmaplabel_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->setStyleSheet("color:gray;");

 QFont system_safe_font =system_safe_label->font();
 system_safe_font.setBold(true);
 system_safe_label->setFont(system_safe_font);
 system_safe_label->setStyleSheet("color:gray;");

 QPixmap pixmap(":/contentWidget/power");
 power_button->setIcon(pixmap);
 power_button->setIconSize(pixmap.size());
 power_button->setFixedSize(180, 70);
 power_button->setStyleSheet("QPushButton{border-radius:5px;background:rgb(110, 190, 10); color:white;}"
  "QPushButton:hover{background:rgb(140,220, 35);}");
 QFont power_font = power_button->font();
 power_font.setPointSize(16);
 power_button->setFont(power_font);

 QVBoxLayout *v_layout = newQVBoxLayout();
 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 = newQHBoxLayout();
 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 = newQVBoxLayout();
 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 ContentWidget::initRight()
{
 right_splitter = new QSplitter();
 //right_splitter->resize(250, 500);
}

void ContentWidget::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->setStyleSheet("QPushButton{color:green;border-image:url(:/contentWidget/login);}"
  "QPushButton:hover{color:rgb(110,190, 10);}");
 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());
 QPixmaplottery_pixmap(":/contentWidget/lottery");
 lottery_button->setIcon(lottery_pixmap);
 lottery_button->setFixedSize(lottery_pixmap.size());
 QPixmapcloud_five_pixmap(":/contentWidget/cloud_five");
 cloud_five_button->setIcon(cloud_five_pixmap);
 cloud_five_button->setFixedSize(cloud_five_pixmap.size());
 QPixmapcaipiao_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->setStyleSheet("color:rgb(0,120, 230); background:transparent;");
 safe_button->setStyleSheet("background:transparent;");
 tab_button->setStyleSheet("background:transparent;");
 pet_button->setStyleSheet("background:transparent;");
 lottery_button->setStyleSheet("background:transparent;");
 cloud_five_button->setStyleSheet("background:transparent;");
 caipiao_button->setStyleSheet("background:transparent;");

 QHBoxLayout *login_layout = newQHBoxLayout();
 login_layout->addWidget(login_button);
 login_layout->addStretch();
 login_layout->setContentsMargins(15, 0, 0,0);

 QHBoxLayout *register_layout = newQHBoxLayout();
 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 = newQHBoxLayout();
 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 = newQVBoxLayout();
 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 ContentWidget::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);

 //设置图标
 QPixmapfireproof_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);

 QPixmaptriggerman_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);

 QPixmapnet_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->setStyleSheet("background:transparent;");
 triggerman_button->setStyleSheet("background:transparent;");
 net_shop_button->setStyleSheet("background:transparent;");

 QHBoxLayout *h_layout = newQHBoxLayout();
 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 ContentWidget::initRightCenterFunction()
{
 right_center_function_widget = newQWidget();
 function_label = new QLabel();
 more_button = new QPushButton();

 QFont function_font =function_label->font();
 function_font.setBold(true);
 function_label->setFont(function_font);
 function_label->setStyleSheet("color:green;");
 more_button->setFixedSize(50, 25);
 more_button->setStyleSheet("QPushButton{color:rgb(0,120, 230); background:transparent;}"
  "QPushButton:hover{color:rgb(100,190, 250);}");
 more_button->setCursor(Qt::PointingHandCursor);

 QHBoxLayout *h_layout = newQHBoxLayout();
 h_layout->addWidget(function_label);
 h_layout->addStretch();
 h_layout->addWidget(more_button);
 h_layout->setSpacing(0);
 h_layout->setContentsMargins(10, 5, 0, 0);

 recovery_button = new QToolButton();
 recovery_button->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
 QPixmaprecovery_pixmap(":/contentWidget/recovery");
 recovery_button->setIcon(recovery_pixmap);
 recovery_button->setIconSize(recovery_pixmap.size());
 recovery_button->setFixedSize(recovery_pixmap.width()+50,recovery_pixmap.height()+35);
 recovery_button->setStyleSheet("QToolButton{background:transparent;}"
  "QToolButton:hover{border-radius:5px;border:1px solid rgb(210, 225, 230);}");

 mobile_button = new QToolButton();
 mobile_button->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
 QPixmapmobile_pixmap(":/contentWidget/mobile");
 mobile_button->setIcon(mobile_pixmap);
 mobile_button->setIconSize(mobile_pixmap.size());
 mobile_button->setFixedSize(mobile_pixmap.width()+50,mobile_pixmap.height()+35);
 mobile_button->setStyleSheet("QToolButton{background:transparent;}"
  "QToolButton:hover{border-radius:5px;border:1px solid rgb(210, 225, 230);}");

 game_box_button = new QToolButton();
 game_box_button->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
 QPixmapgame_box_pixmap(":/contentWidget/game_box");
 game_box_button->setIcon(game_box_pixmap);
 game_box_button->setIconSize(game_box_pixmap.size());
 game_box_button->setFixedSize(game_box_pixmap.width()+50,game_box_pixmap.height()+35);
 game_box_button->setStyleSheet("QToolButton{background:transparent;}"
  "QToolButton:hover{border-radius:5px;border:1px solid rgb(210, 225, 230);}");

 desktop_button = new QToolButton();
 desktop_button->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
 QPixmapdesktop_pixmap(":/contentWidget/desktop");
 desktop_button->setIcon(desktop_pixmap);
 desktop_button->setIconSize(desktop_pixmap.size());
 desktop_button->setFixedSize(desktop_pixmap.width()+50,desktop_pixmap.height()+35);
 desktop_button->setStyleSheet("QToolButton{background:transparent;}"
  "QToolButton:hover{border-radius:5px;border:1px solid rgb(210, 225, 230);}");

 net_repair_button = new QToolButton();
 net_repair_button->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
 QPixmapnet_repair_pixmap(":/contentWidget/net_repair");
 net_repair_button->setIcon(net_repair_pixmap);
 net_repair_button->setIconSize(net_repair_pixmap.size());
 net_repair_button->setFixedSize(net_repair_pixmap.width()+50,net_repair_pixmap.height()+35);
 net_repair_button->setStyleSheet("QToolButton{background:transparent;}"
  "QToolButton:hover{border-radius:5px;border:1px solid rgb(210, 225, 230);}");

 auto_run_button = new QToolButton();
 auto_run_button->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
 QPixmapauto_run_pixmap(":/contentWidget/auto_run");
 auto_run_button->setIcon(auto_run_pixmap);
 auto_run_button->setIconSize(auto_run_pixmap.size());
 auto_run_button->setFixedSize(auto_run_pixmap.width()+50,auto_run_pixmap.height()+35);
 auto_run_button->setStyleSheet("QToolButton{background:transparent;}"
  "QToolButton:hover{border-radius:5px;border:1px solid rgb(210, 225, 230);}");

 net_speed_button = new QToolButton();
 net_speed_button->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
 QPixmapnet_speed_pixmap(":/contentWidget/net_speed");
 net_speed_button->setIcon(net_speed_pixmap);
 net_speed_button->setIconSize(net_speed_pixmap.size());
 net_speed_button->setFixedSize(net_speed_pixmap.width()+50,net_speed_pixmap.height()+35);
 net_speed_button->setStyleSheet("QToolButton{background:transparent;}"
  "QToolButton:hover{border-radius:5px;border:1px solid rgb(210, 225, 230);}");

 net_pretext_button = new QToolButton();
 net_pretext_button->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
 QPixmapnet_pretext_pixmap(":/contentWidget/net_pretext");
 net_pretext_button->setIcon(net_pretext_pixmap);
 net_pretext_button->setIconSize(net_pretext_pixmap.size());
 net_pretext_button->setFixedSize(net_pretext_pixmap.width()+50,net_pretext_pixmap.height()+35);
 net_pretext_button->setStyleSheet("QToolButton{background:transparent;}"
  "QToolButton:hover{border-radius:5px;border:1px solid rgb(210, 225, 230);}");

 first_add_button = new QToolButton();
 first_add_button->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
 QPixmapfirst_add_pixmap(":/contentWidget/first_add");
 first_add_button->setIcon(first_add_pixmap);
 first_add_button->setIconSize(first_add_pixmap.size());
 first_add_button->setFixedSize(first_add_pixmap.width()+50,first_add_pixmap.height()+35);
 first_add_button->setStyleSheet("QToolButton{background:transparent;}"
  "QToolButton:hover{border-radius:5px;border:1px solid rgb(210, 225, 230);}");

 QGridLayout *grid_layout = newQGridLayout();
 grid_layout->addWidget(recovery_button, 0,0);
 grid_layout->addWidget(mobile_button, 0,1);
 grid_layout->addWidget(game_box_button, 0,2);
 grid_layout->addWidget(desktop_button, 1,0);
 grid_layout->addWidget(net_repair_button, 1,1);
 grid_layout->addWidget(auto_run_button, 1,2);
 grid_layout->addWidget(net_speed_button, 3,0);
 grid_layout->addWidget(net_pretext_button, 3,1);
 grid_layout->addWidget(first_add_button, 3,2);
 grid_layout->setSpacing(0);
 grid_layout->setContentsMargins(5, 0, 5,5);

 QVBoxLayout *v_layout = newQVBoxLayout();
 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_function_widget->setLayout(v_layout);
}

void ContentWidget::initRightBottom()
{
 right_bottom_widget = new QWidget();
 icon_label = new QLabel();
 connect_label = new QLabel();
 version_label = new QLabel();
 version_button = new QPushButton();

 QPixmaplabel_pixmap(":/contentWidget/cloud");
 icon_label->setPixmap(label_pixmap);
 icon_label->setFixedSize(label_pixmap.size());

 QPixmappixmap(":/contentWidget/version");
 version_button->setIcon(pixmap);
 version_button->setIconSize(pixmap.size());
 version_button->setFixedSize(20, 20);
 version_button->setStyleSheet("background:transparent;");

 QHBoxLayout *bottom_layout = newQHBoxLayout();
 bottom_layout->addWidget(icon_label);
 bottom_layout->addWidget(connect_label);
 bottom_layout->addStretch();
 bottom_layout->addWidget(version_label);
 bottom_layout->addWidget(version_button);
 bottom_layout->setSpacing(5);
 bottom_layout->setContentsMargins(10, 0, 10,0);
 right_bottom_widget->setLayout(bottom_layout);
}

void ContentWidget::translateLanguage()
{
 suggest_label->setText(tr("suggest"));
 system_safe_label->setText(tr("systemsafe"));
 power_button->setText(tr("power"));

 login_button->setText(tr("loginhome"));
 info_label->setText(tr("show beautifullicon"));
 register_button->setText(tr("register"));
 privilege_label->setText(tr("privilegepower"));

 fireproof_button->setText(tr("fireproof"));
 triggerman_button->setText(tr("triggerman"));
 net_shop_button->setText(tr("net shop"));

 function_label->setText(tr("function"));
 more_button->setText(tr("more"));
 recovery_button->setText(tr("recovery"));
 mobile_button->setText(tr("mobile"));
 game_box_button->setText(tr("gamebox"));
 desktop_button->setText(tr("desktop"));
 net_repair_button->setText(tr("netrepair"));
 auto_run_button->setText(tr("autorun"));
 net_speed_button->setText(tr("netspeed"));
 net_pretext_button->setText(tr("netpretext"));
 first_add_button->setText(tr("firstadd"));

 connect_label->setText(tr("connectsuccess"));
 version_label->setText(tr("version"));
}

bool ContentWidget::eventFilter(QObject *obj, QEvent*event)
{
 if(obj == line_label_1 || obj ==line_label_2)
 {
  if(event->type() ==QEvent::Paint)
  {
   intlabel_height_1 = line_label_1->height();
   intlabel_width_1 = line_label_1->width();
   QPainterpainter(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); 

   intlabel_height_2 = line_label_2->height();
   intlabel_width_2 = line_label_2->width();
   QPainterpainter2(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);
}

   好吧,代码比较多,而且基本没有注释,好的程序员注释是必不可少的,呵呵,自己写的程序也许只有自己能看懂!其实个人感觉看起来应该也不怎么费力,因为大多数代码也都是见名知意的。。。而且研究也是一个学习的过程!

 

  注:技术在于交流、在于沟通,分享内容请勿用作商业途径,转载请说明出处,违者必究!

抱歉!评论已关闭.