版权声明:若无来源注明,Techie亮博客文章均为原创。 转载请以链接形式标明本文标题和地址:
本文标题:Qt自定义标题栏     本文地址:http://techieliang.com/2017/11/326/
代码较多,显示效果不佳,建议原地址查看

1. 标题栏的最大化、最小化、关闭按钮图标

此类按钮建议使用QToolButton实现,图标可以自定义也可以用Qt自带的基础图标

  1. QToolButton *toolButton_mini;//最小化
  2. QToolButton *toolButton_max;//最大化
  3. QToolButton *toolButton_close;//关闭
  4. toolButton_mini->setIcon(style()->standardPixmap(QStyle::SP_TitleBarMinButton));
  5. toolButton_max->setIcon(style()->standardPixmap(QStyle::SP_TitleBarMaxButton));
  6. toolButton_close->setIcon(style()->standardPixmap(QStyle::SP_TitleBarCloseButton));

将上述控件的点击事件与相应函数connect即可实现对应功能,注意最大化分为“最大化”和“还原”两个状态,且Qt提供了两个函数,不能直接connect。对应函数名分别为:

  1. showMinimized()
  2. showNormal()//还原
  3. showMaximized()//最大化
  4. close()

2. QToolBar基本使用

直接new一个控件,然后再窗口类中使用:

  1. addToolBar(this);

实现此控件的添加

通过QToolBar *a;a->asetMovable(false);实现禁止移动,同时取消工具栏左侧的移动标示按钮

3. QToolBar控件局右显示

一般关闭等按钮在右侧,QToolBar默认在左侧,可以在中间添加一个QWidget实现占位,从而保证按钮局右

  1. QWidget *toolBar_seat = new QWidget;
  2. toolBar_seat->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);//长宽自动扩展
  3. addWidget(toolBar_seat);

4. 双击标题栏最大化

直接重写QObject的鼠标双击事件

  1. protected:
  2. void TitleBar::mouseDoubleClickEvent(QMouseEvent *event) {
  3. if(Qt::LeftButton == event->button())
  4. MaximizeButtonClicked();//此处调用最大化/还原按钮点击槽
  5. event->ignore();
  6. }

5. 窗口拖拽

使用自定义标题栏以后,窗口将失去拖拽标题栏移动的功能,通过此步骤可以重现,同样重写对应鼠标事件

  1. virtual void mousePressEvent(QMouseEvent *event);
  2. virtual void mouseReleaseEvent(QMouseEvent *event);
  3. virtual void mouseMoveEvent(QMouseEvent *event);

主要原理是在按下时记录按下状态及按下时的窗口坐标,抬起时取消状态,在鼠标移动时判断状态并根据当前坐标差进行移动。

  1. event->globalPos()//获取系统下全局坐标
  2. widget=window();//获取主窗口指针
  3. qwidget->move()//移动窗口

具体源码请见GitHubQtWidgetsExamples

Qt自定义标题栏的更多相关文章

  1. paip.提升用户体验---c++ qt自定义窗体(1)---标题栏的绘制

    源地址:http://blog.csdn.net/attilax/article/details/12343625 paip.提升用户体验---c++ qt自定义窗体(1)---标题栏的绘制 效果图: ...

  2. Qt之界面(自定义标题栏、无边框、可移动、缩放)

    效果 自定义标题栏 titleBar.h #ifndef TITLEBAR_H #define TITLEBAR_H #include <QLabel> #include <QPus ...

  3. QT自定义精美换肤界面

    陆陆续续用QT开发过很多项目,也用QT写过不少私活项目,也写过N个工具,一直梦寐以求能像VC一样可以很方便的有个自定义的界面,QSS的强大让我看到了很好的希望,辗转百度谷歌无数次,一直搜索QT相关的换 ...

  4. UWP中实现自定义标题栏

    UWP中实现自定义标题栏 0x00 起因 在UWP开发中,有时候我们希望实现自定义标题栏,例如在标题栏中加入搜索框.按钮之类的控件.搜了下资料居然在一个日文网站找到了一篇介绍这个主题的文章: http ...

  5. WPF 自定义标题栏 自定义菜单栏

    自定义标题栏 自定义列表,可以直接修改WPF中的ListBox模板,也用这样类似的效果.但是ListBox是不能设置默认选中状态的. 而我们需要一些复杂的UI效果,还是直接自定义控件来的快 GitHu ...

  6. 【Win10开发】自定义标题栏

    UWP 现在已经可以自定义标题栏了,毕竟看灰色时间长了也会厌烦,开发者们还是希望能够将自己的UI做的更加漂亮,更加与众不同.那么废话不多说,我们开始吧! 首先要了解ApplicationViewTit ...

  7. Android开发-取消程序标题栏或自定义标题栏

    注:本文由Colin撰写,版权所有!转载请注明原文地址,谢谢合作! 在Android开发中,跟据需要我们有时候需要自定义应用程序的标题栏或者取消程序的标题栏,下面本菜鸟在此记录与分享一下自己使用的方法 ...

  8. setFeatureInt、android 自定义标题栏

    Android 自带的toolbar 往往不能很好的的满足我们的个性化要求.因此我们经常使用自定的的标题栏.而Android系统本身也允许我们自定以标题栏. 记录一下,自定义标题栏常遇到的问题.先上效 ...

  9. Android应用开发基础篇(14)-----自定义标题栏

    一.概述 每一个应用程序默认的标题栏(注意与状态栏的区别)只有一行文字(新建工程时的名字),而且颜色.大小等都是固定的,给人的感觉比较单调.但当程序需要美化的时候,那么修改标题栏是就是其中一项内容,虽 ...

随机推荐

  1. Git安装配置(Linux)

    使用yum安装Git yum install git -y 编译安装 # 安装依赖关系 yum install curl-devel expat-devel gettext-devel openssl ...

  2. PTA基础编程题目集7-2然后是几点

    有时候人们用四位数字表示一个时间,比如1106表示11点零6分.现在,你的程序要根据起始时间和流逝的时间计算出终止时间. 读入两个数字,第一个数字以这样的四位数字表示当前时间,第二个数字表示分钟数,计 ...

  3. error: command 'aarch64-linux-gnu-gcc' failed with exit status 1

    使用jetson tx2安装tensorpack时报错: error: command 'aarch64-linux-gnu-gcc' failed with exit status 1 改正: 如果 ...

  4. 20145234黄斐《Java程序设计》第九周学习总结

    教材学习内容总结 JDBC Java语言访问数据库的一种规范,是一套API.JDBC (Java Database Connectivity) API,即Java数据库编程接口,是一组标准的Java语 ...

  5. object转List<XXX>的问题

    List<object> demo(object a) { List<object> res = new List<object>(); object c = a; ...

  6. asp.net微信公众平台本地调试设置

    1.首先要开启内网穿透功能,我这边使用自己搭建的ngrok内网穿透服务(具体如何搭建ngrok内网穿透服务,另开一篇说) 2.开启内网穿透后,即可实现互联网访问 www.tbkmama.cn 指向 1 ...

  7. P2351 [SDOi2012]吊灯

    P2351 [SDOi2012]吊灯 https://www.luogu.org/problemnew/show/P2351     题意: 一棵树,能否全部分成大小为x的联通块. 分析: 显然x是n ...

  8. Myeclipse - 问题集 - specified vm install not found

    In Eclipse, click the ant file -- Run As -- External Tools Configuration and click on the JRE tab. S ...

  9. 在Win10中通过命令行打开UWP应用

    近期由于需要在WinX菜单中添加几个UWP应用,但发现很难找到相应的命令行,Universal Apps 的快捷方式属性里也没有. 于是到网上搜了很久才找到一个E文的页面,试了一下确实可行,分享给大家 ...

  10. 【独家】K8S漏洞报告 | 近期bug fix解读&1.9.11主要bug fix汇总

    *内容提要: 1. Kube-proxy长连接优雅断开机制及IPVS模式实现 2. 10/29--11/19 bug fix汇总分析 3. 1.9.11重要bug fix汇总 在本周的跟踪分析中,以1 ...