1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > qmainwindow 标题栏_Qt之360安全卫士主界面(标题栏)

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

时间:2023-10-13 23:05:07

相关推荐

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

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

效果如下:

有人可能会好奇,界面的图片跟360的一样,开始的时候我也比较头疼,要做界面怎么可以没有图片呢!然后呢,既然安装过360,里面会有界面的一部分图片(当然,不是全部都有),把里面的图片拿出来,至于其它没有的那就只能找人做了,界面的美观度与美工有很大的关系!在这里谢过我的师傅(软件工程师兼职美工,你值得拥有)

标题栏:

关于标题栏的按钮样式(皮肤、最小化、最大化、关闭等)不再多说,三种状态:正常、鼠标划过、鼠标按下!可以由QPushButton、QToolButton实现均可,关于标题“360安全卫士9.1”可由QLabel实现,设置字体为白色即可!

在这里我把“电脑体检、木马查杀等”这部分功能栏也称为标题栏,当双击其空白处也可实现窗体的最大化,通过点击不同的按钮来切换至不同的界面,按钮由QToolButton实现,设置其文本位于图标之下、,后面的“360安全卫士”是一张图片,在安装包里可以找到!

代码如下:

#include "title_widget.h"

#include "tool_button.h"

TitleWidget::TitleWidget(QWidget *parent)

:QWidget(parent)

{

version_title = new QLabel();

skin_button

= new PushButton();

main_menu_button = new PushButton();

min_button =

new PushButton();

max_button =

new PushButton();

close_button

= new PushButton();

medal_button = new QPushButton();

version_title->setStyleSheet("color:white;");

//设置图片

skin_button->loadPixmap(":/sysButton/skin_button");

main_menu_button->loadPixmap(":/sysButton/main_menu");

min_button->loadPixmap(":/sysButton/min_button");

max_button->loadPixmap(":/sysButton/max_button");

close_button->loadPixmap(":/sysButton/close_button");

QIcon

medal_icon(":/contentWidget/medal");

medal_button->setIcon(medal_icon);

medal_button->setFixedSize(25, 25);

medal_button->setIconSize(QSize(25,

25));

medal_button->setStyleSheet("background:transparent;");

connect(skin_button, SIGNAL(clicked()), this,

SIGNAL(showSkin()));

connect(main_menu_button, SIGNAL(clicked()),

this, SIGNAL(showMainMenu()));

connect(min_button, SIGNAL(clicked()), this,

SIGNAL(showMin()));

connect(max_button, SIGNAL(clicked()), this,

SIGNAL(showMax()));

connect(close_button, SIGNAL(clicked()), this,

SIGNAL(closeWidget()));

QHBoxLayout *title_layout = new QHBoxLayout();

title_layout->addWidget(version_title,0,Qt::AlignVCenter);

title_layout->addStretch();

title_layout->addWidget(medal_button, 0,

Qt::AlignTop);

title_layout->addWidget(skin_button, 0, Qt::AlignTop);

title_layout->addWidget(main_menu_button, 0,

Qt::AlignTop);

title_layout->addWidget(min_button, 0, Qt::AlignTop);

title_layout->addWidget(max_button, 0, Qt::AlignTop);

title_layout->addWidget(close_button, 0, Qt::AlignTop);

title_layout->setSpacing(0);

title_layout->setContentsMargins(0, 0, 5,

0);

version_title->setContentsMargins(15, 0, 0,

0);

skin_button->setContentsMargins(0, 0, 10,

0);

QStringList string_list;

string_list<

":/img/toolWidget/xiTong.png"<

":/img/toolWidget/menZhen.png"<

QHBoxLayout *button_layout = new

QHBoxLayout();

QSignalMapper *signal_mapper = new

QSignalMapper(this);

for(int i=0; i

{

ToolButton *tool_button = new

ToolButton(string_list.at(i));

button_list.append(tool_button);

connect(tool_button,

SIGNAL(clicked()), signal_mapper, SLOT(map()));

signal_mapper->setMapping(tool_button,

QString::number(i, 10));

button_layout->addWidget(tool_button,

0, Qt::AlignBottom);

}

connect(signal_mapper, SIGNAL(mapped(QString)),

this, SLOT(turnPage(QString)));

QLabel *logo_label = new QLabel();

QPixmap pixmap(":/img/logo.png");

logo_label->setPixmap(pixmap);

logo_label->setFixedSize(pixmap.size());

logo_label->setCursor(Qt::PointingHandCursor);

button_layout->addStretch();

button_layout->addWidget(logo_label);

button_layout->setSpacing(8);

button_layout->setContentsMargins(15, 0, 0,

0);

QVBoxLayout *main_layout = new

QVBoxLayout();

main_layout->addLayout(title_layout);

main_layout->addLayout(button_layout);

main_layout->setSpacing(0);

main_layout->setContentsMargins(0, 0, 0,

0);

this->translateLanguage();

setLayout(main_layout);

setFixedHeight(100);

is_move =

false;

}

void TitleWidget::translateLanguage()

{

version_title->setText(tr("title"));

skin_button->setToolTip(tr("change

skin"));

main_menu_button->setToolTip(tr("main

menu"));

min_button->setToolTip(tr("minimize"));

max_button->setToolTip(tr("maximize"));

close_button->setToolTip(tr("close"));

button_list.at(0)->setText(tr("power"));

button_list.at(1)->setText(tr("mummy"));

button_list.at(2)->setText(tr("hole"));

button_list.at(3)->setText(tr("repair"));

button_list.at(4)->setText(tr("clear"));

button_list.at(5)->setText(tr("optimize"));

button_list.at(6)->setText(tr("expert"));

button_list.at(7)->setText(tr("software"));

}

void TitleWidget::mousePressEvent(QMouseEvent *e)

{

press_point

= e->pos();

is_move =

true;

}

void TitleWidget::mouseMoveEvent(QMouseEvent *e)

{

if((e->buttons() == Qt::LeftButton) && is_move)

{

static QWidget* parent_widget = this->parentWidget();

QPoint parent_point = parent_widget->pos();

parent_point.setX(parent_point.x() + e->x() -

press_point.x());

parent_point.setY(parent_point.y() + e->y() -

press_point.y());

parent_widget->move(parent_point);

}

}

void TitleWidget::mouseReleaseEvent(QMouseEvent *)

{

if(is_move)

{

is_move = false;

}

}

void TitleWidget::mouseDoubleClickEvent(QMouseEvent *)

{

emit

showMax();

}

void TitleWidget::turnPage(QString current_page)

{

bool ok;int current_index = current_page.toInt(&ok,

10);

for(int i=0; i

{

ToolButton *tool_button =

button_list.at(i);

if(current_index == i)

{

tool_button->setMousePress(true);

}

else

{

tool_button->setMousePress(false);

}

}

}

这里包括重写鼠标事件mousePressEvent、mouseMoveEvent、mouseReleaseEvent来控制主窗体的移动、通过mouseDoubleClickEvent来实现双击最大化等,translateLanguage()主要是为了后面实现多语化使用!

注:

技术在于交流、沟通,转载请注明出处并保持作品的完整性。

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