转:/s/blog_4ba5b45e0102e83h.html要想做出好看的界面,qt自带的标题栏必须摒弃。
以下是两种去掉标题栏的方式:
MainWindow::MainWindow(QWidget*parent):QMainWindow(parent),ui(newUi::MainWindow){ui->setupUi(this);
this->setWindowFlags(Qt::FramelessWindowHint);//去掉窗口标题栏方式1//this->setWindowFlags(Qt::X11BypassWindowManagerHint);//去掉窗口标题栏2}
简单的代码列在下面:
MainWindow.h
privateslots:voidon_actionMinimize_triggered();//最小化窗口voidon_actionClose_triggered();//关闭窗口protected://自己重新实现拖动操作voidmouseMoveEvent(QMouseEvent*event);voidmousePressEvent(QMouseEvent*event);voidmouseReleaseEvent(QMouseEvent*);private://自己重新实现拖动操作QPointmousePosition;boolisMousePressed;
实现代码:MainWindow.cpp
#include//自己实现的窗口拖动操作#include//鼠标事件
//标题栏的长度conststaticintpos_min_x=0;conststaticintpos_max_x=800-40;conststaticintpos_min_y=0;conststaticintpos_max_y=20;//自己实现的窗口拖动操作voidMainWindow::mousePressEvent(QMouseEvent*event){mousePosition=event->pos();//只对标题栏范围内的鼠标事件进行处理if(mousePosition.x()<=pos_min_x)return;if(mousePosition.x()>=pos_max_x)return;if(mousePosition.y()<=pos_min_y)return;if(mousePosition.y()>=pos_max_y)return;isMousePressed=true;}voidMainWindow::mouseMoveEvent(QMouseEvent*event){if(isMousePressed==true){QPointmovePot=event->globalPos()-mousePosition;move(movePot);}}voidMainWindow::mouseReleaseEvent(QMouseEvent*event){isMousePressed=false;}
voidMainWindow::on_actionMinimize_triggered(){//系统自定义的最小化窗口函数showMinimized();//最大化showMaximized();}voidMainWindow::on_actionClose_triggered(){//系统自定义的窗口关闭函数close();}参考:
自制标题栏的拖放(Qt)
/自制标题栏的拖放qt/
//06/