Qt 窗口设置自定义标题栏(隐藏系统标题栏) |
您所在的位置:网站首页 › 有没有改软件图标的软件 › Qt 窗口设置自定义标题栏(隐藏系统标题栏) |
在使用Qt制作软件时,为了追求界面美观或者软件整体布局的协调性,通常我们会希望修改程序自带的系统标题栏,但是我找了好久,都没有找到直接修改系统标题栏样式的方法,大多数都是通过去除系统自带边框和标题栏,自己设计一个自定义的标题栏。 具体方法如下: /*************************************** 注意 ******************************************************** 1.隐藏标题栏相当于将窗口的边框隐藏了,此时通过样式表设置窗口边框圆角或其他边框属性无效 2.拖拽边框设置窗口大小缩放无效 *******************************************************************************************************/ //1.首先第一步就是,隐藏Windows窗口自带的标题栏 this->setWindowFlag(Qt::FramelessWindowHint); //通过设置窗口的标志来实现隐藏窗口标题栏的功能 //常用的其他窗口标志如下: // Qt::Tool //隐藏任务栏图标 // Qt::Tooltip //隐藏窗口标题栏和任务栏图标 // Qt::FramelessWindowHint //隐藏标题栏(无法移动和缩放窗口) //2.设置隐藏窗口标题栏后就无法移动和缩放窗口了 //想要移动和缩放窗口,就需要重载鼠标事件 // a.在.h文件中声明一个变量用来存放位置坐标 private: QPoint m_lastPos; // b.声明鼠标事件函数 protected: void mouseMoveEvent(QMouseEvent *event) override; void mousePressEvent(QMouseEvent *event) override; void mouseReleaseEvent(QMouseEvent *event) override; // c.重写鼠标事件 //鼠标移动事件 void MainWindow::mouseMoveEvent(QMouseEvent *event) { //移动窗口 this->move(this->x()+(event->globalX()-m_lastPos.x()),this->y()+(event->globalY()-m_lastPos.y())); //记录窗口坐标 m_lastPos = event->globalPos(); } //鼠标按下事件 void MainWindow::mousePressEvent(QMouseEvent *event) { //记录鼠标按下时的窗口坐标 m_lastPos = event->globalPos(); } //鼠标松开事件 void MainWindow::mouseReleaseEvent(QMouseEvent *event) { //记录鼠标松开时窗口的坐标 m_lastPos = event->globalPos(); }/********************************** 相关函数 ***************************************** this->move(x,y); //移动当前窗口位置至指定xy点; event->globalPos(); //返回鼠标事件发生时的全局坐标点; event->globalX(); //返回鼠标事件发生时的全局坐标点的x坐标; event->globaly(); //返回鼠标事件发生时的全局坐标点的y坐标; ****************************************************************************************/ 在设置窗口无标题栏时,是通过去掉窗口边框实现的,在这种情况下,设置窗口边框圆角属性是无法生效的,如果要设置圆角的话,可以参考以下方法。 一、设置窗口背景透明 this->setAttribute(Qt::WA_TranslucentBackground, true);//设置窗口背景透明二、在整个界面中添加一个widget控件作为整个软件的背景板 三、由于设置了窗口透明,第二步中所设的widget的边框,就可以近似看作软件的边框,这样设置widget的qss样式表中的圆角属性,就可以实现窗口圆角了。 QWdiget#widget_background{ border:1px solid #000000; border-radius:5px; } |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |