#include "widget.h"
#include "ui_widget.h"
#include<QMouseEvent>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
setWindowFlags(Qt::FramelessWindowHint);//隐藏边框
ui->tbn_close->setIcon(QIcon(":/img/close.png"));
ui->tbn_max->setIcon(QIcon(":/img/max.png"));
ui->tbn_min->setIcon(QIcon(":/img/min.png"));
//设置样式表(默认背景颜色、悬停时背景颜色、按下时背景颜色)
setStyleSheet("QToolButton{background-color:rgba(0,0,0,0);}QToolButton:hover{background-color:rgba(255,255,255,0.5);}QToolButton:pressed{background-color: rgba(100,100,100,1);}");
}
Widget::~Widget()
{
delete ui;
}
//close
void Widget::on_tbn_close_clicked()
{
Widget::close();//关闭事件
}
//max-restore
void Widget::on_tbn_max_clicked()
{
if (Widget::isMaximized())
{
Widget::showNormal();//还原事件
ui->tbn_max->setIcon(QIcon(":/img/max.png"));
}
else
{
Widget::showMaximized();//最大化事件
ui->tbn_max->setIcon(QIcon(":/img/restore.png"));
}
}
//min
void Widget::on_tbn_min_clicked()
{
Widget::showMinimized(); //最小化
}
//move
void Widget::mousePressEvent(QMouseEvent *event)
{
if(event->button() == Qt::LeftButton)
{
whereismouse=event->pos();
}
}
void Widget::mouseMoveEvent(QMouseEvent *event)
{
if(event->buttons() == Qt::LeftButton)
{
//当窗口最大化或最小化时也不进行触发
if(Widget::isMaximized() || Widget::isMinimized())
{
return;
}
else
{
//当在按钮之类需要鼠标操作的地方不进行触发(防误触)
if (ui->tbn_close->underMouse()||ui->tbn_max->underMouse()||ui->tbn_min->underMouse())
{
}
else
{
Widget::move(Widget::mapToGlobal(event->pos()-whereismouse));//移动
}
}
}
event->accept();
}
- 1
- 2
- 3
- 4
- 5
- 6
前往页