再说主界面除标题栏、功能栏外的中央窗体,分为左右两部分!
左半边几面由QWidget实现,包含三个QLabel、一个QPushButton,QLabel主要显示图片、文本信息,另外一个按钮就负责“立即体检”了。
右半边由QSplitter实现分割窗体,又包含四个QWidget,每个QWidget又包含不同的组件,
整体部分由QSplitter将左半边的QWidget与右半边的QSplitter分割,分割器分割部分均不可拖动!
代码如下:
#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);
}
好吧,代码比较多,而且基本没有注释,好的程序员注释是必不可少的,呵呵,自己写的程序也许只有自己能看懂!其实个人感觉看起来应该也不怎么费力,因为大多数代码也都是见名知意的。。。而且研究也是一个学习的过程!
注:技术在于交流、在于沟通,分享内容请勿用作商业途径,转载请说明出处,违者必究!