Qt 窗口设置自定义标题栏(隐藏系统标题栏)

您所在的位置:网站首页 有没有改软件图标的软件 Qt 窗口设置自定义标题栏(隐藏系统标题栏)

Qt 窗口设置自定义标题栏(隐藏系统标题栏)

2023-07-13 02:46| 来源: 网络整理| 查看: 265

在使用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