QT实现自定义标题栏,并移动
程序员文章站
2022-07-13 23:14:32
...
qt默认的标题栏样式让人看着挺尴尬的。为了使界面好看,我们需要重新制作标题栏。
qt给了两个隐藏标题栏的方法:
1:setWindowFlags(Qt::FramelessWindowHint);//生成无边界窗口,无法移动、缩放窗口
2:setWindowFlags(Qt::CustomizeWindowHint);//关闭默认串口标题提示,注意:这个可以隐藏标题栏,并且可以保留串口缩放功能。但是:在顶部会留下一小片空白,有点难看
在这里,我们主要讲使用第一种方法生成无边界窗口,并实现窗口移动;
我采用了事件监听鼠标事件的方法,来进行窗口移动;以下是简要代码:
QPoint mouse_press_point; //定义全局变量,记录鼠标点击时的坐标
if(inner_obj==ui->top_widget){//事件过滤器,发现目标对象上有事件
if(inner_event->type()==QEvent::MouseButtonPress){//发现有点击事件,记录鼠标此刻的坐标
mouse_press_point=dynamic_cast<QMouseEvent*>(inner_event)->globalPos();
}
if(inner_event->type()==QEvent::MouseMove){//发现有鼠标移动,此刻进行串口移动
int inner_top_mouse_point_x=dynamic_cast<QMouseEvent*>(inner_event)->globalX();
int inner_top_mouse_point_y=dynamic_cast<QMouseEvent*>(inner_event)->globalY();
this->move(this->x()+inner_top_mouse_point_x-mouse_press_point.x(),this->y()+inner_top_mouse_point_y-mouse_press_point.y());//移动窗口
mouse_press_point=dynamic_cast<QMouseEvent*>(inner_event)->globalPos();//记录移动后的鼠标坐标
}
}
上一篇: QLPreviewController 自定义标题
下一篇: 自定义窗口标题
推荐阅读
-
Android自定义视图实现手指移动轨迹
-
Android自定义ToolBar并实现沉浸式的方法
-
vue 使用element-ui中的Notification自定义按钮并实现关闭功能以及如何处理多个通知
-
Qt 信号自定义槽函数的实现
-
vue 使用element-ui中的Notification自定义按钮并实现关闭功能及如何处理多个通知
-
Android自定义View实现跟随手指移动的小兔子
-
android高德地图网络路径实现自定义marker并点击弹出自定义窗口
-
DevExpress的TreeList实现显示本地文件目录并自定义右键实现删除与重命名文件
-
qml实现自定义标题栏按钮
-
QT 简单实现自定义标题栏