Qt:自定义标题栏(QMainWindow)

简述

       通过qss自定义外观后,发现标题栏的外观未发生变化,与整体的风格不融洽。因为程序的最外层边框加载的是系统本地的窗口。为了使风格统一,我们可以自定义一个标题栏来显示窗体的图标、标题,以及控制窗体最小化、最大化、关闭的按钮,并控制其风格与主界面一致。

       网上有很多Qt自定义标题栏的代码。这里分享一个我觉得较好的自定义标题栏。与其他代码不同,其把对主窗口的相关处理事件都封装在标题栏类中,使用的时候,通过安装事件监听器来完成对主窗的控制。效果如下图所示:

Qt:自定义标题栏(QMainWindow)_第1张图片     

系统边框              

  Qt:自定义标题栏(QMainWindow)_第2张图片

   自定义边框

 

上面是对对话框自定义标题栏,使用时,除了安装监听器,需要把标题栏放置在对话框布局的顶端

 

[cpp]  view plain  copy

  1. //自定义标题栏  
  2.    setWindowFlags(Qt::FramelessWindowHint | windowFlags());  
  3.    TitleBar *pTitleBar = new TitleBar(this);  
  4.    installEventFilter(pTitleBar);  
  5.    qobject_cast(this->layout())->insertWidget(0,pTitleBar);  


这里额外说明是对QmainWindow添加自定义边框,在对QmainWindow类调用this->layout返回的是空,得不到其布局,QMainWindow的布局是已经定义好的,不能够进行改变。为了能添加自定义边框,在外面加了一个QWidget. 将自定义标题栏和QMainWindow添加到QWidget中。同时为了使得Qmainwindow能够嵌入到QWidget中,需要添加如下设置:

 

 

[cpp]  view plain  copy

  1. this->setWindowFlags(Qt::Widget);  

 

 

效果:

 

Qt:自定义标题栏(QMainWindow)_第3张图片

 

参考文献:

 

  1  自定义标题栏

  2  自定义窗体缩放

  3 setGeometry: Unable to set geometry

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

世纪隐龙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值