前言

上一章介绍了ControlTreeWidgetControlTabWidget联动的功能,这一章我们将实现自定义 TitleBar 的功能

操作步骤

  1. 修改按键图标最大和最小值

  2. 右键按键图标,转到对应的槽函数中去

  3. 对应的槽函数的实现如下:

void MainTitleBar::on_pushButtonMin_clicked()
{
if(parentWidget)
{
parentWidget->showMinimized();
}
} void MainTitleBar::on_pushButtonMax_clicked()
{
if(parentWidget == nullptr) return;
if (parentWidget->isMaximized())
{
parentWidget->showNormal();
ui->pushButtonMax->setStyleSheet("QPushButton{border-image: url(:/image/normal_normal.png);}"
"QPushButton:hover{border-image: url(:/image/normal_hover.png);}");
}
else
{
parentWidget->showMaximized();
ui->pushButtonMax->setStyleSheet("QPushButton{border-image: url(:/image/max_normal.png);}"
"QPushButton:hover{border-image: url(:/image/max_hover.png);}");
}
} void MainTitleBar::on_pushButtonClose_clicked()
{
if(parentWidget)
{
parentWidget->close();
}
}
  1. 此时运行的效果图如下,这个时候可以看到最上边还有一个窗口 MainWindow 的工具栏,同时还有一小条标题栏。

  1. 点击pushButtonClose 按钮就剩下只有MainWindow 的窗口了。

  1. 我们在UI中将 menuBar 和mainToolBar 都删除

同时在代码中设置

    this->setWindowFlags(Qt::FramelessWindowHint);
  1. 此时就已达到我们想要的效果:只显示我们自定义的内容

  1. 在MainTitleBar 初始化的时候,我们加上按键的样式设计,最终显示效果如下:
void MainTitleBar::InitValue()
{
ui->pushButtonMax->setStyleSheet("QPushButton{border-image: url(:/image/normal_normal.png);}"
"QPushButton:hover{border-image: url(:/image/normal_hover.png);}");
ui->pushButtonMin->setStyleSheet("QPushButton{border-image: url(:/image/min_normal.png);}"
"QPushButton:hover{border-image: url(:/image/min_hover.png);}");
ui->pushButtonClose->setStyleSheet("QPushButton{border-image: url(:/image/close_normal.png);}"
"QPushButton:hover{border-image: url(:/image/close_hover.png);}");
}

这里有一点小BUG,就是最小化设计的时候,图标实现有些异常,不知道具体是哪里引起的。

总结

这一章实现了自定义TileBar的功能,下面一章,我们将介绍UI的样式设计.

本章工程代码:page_sample_04.rar

完整工程下载地址,请到 liwen01 微信公众号中回复: QT 获取

---------------------------End---------------------------
长按识别二维码
关注 liwen01 公众号

Qt5.9 UI设计(六)——TitleBar功能实现的更多相关文章

  1. Qt5.9 UI设计(七)——统一样式设计

    前言 前面已经将UI设计部分实现,各页面也做了最简单的设计,本章介绍一下qss样式的使用.样式设计最终的显示效果如下图: 操作步骤 将stylesheet.qss 样式文件添加进工程 styleshe ...

  2. 从Web借鉴UI设计

    从Web借鉴UI设计 用户体验已经成为衡量应用软件质量的重要标准.在过去我们可能会惊叹于某个Web应用的华丽界面,现在,随着HTML5的强势登场,各类表现层技术及开发框架的发布,Web与窗体应用的界限 ...

  3. UI设计--大象无形

      UI设计,大象无形 UI设计,如同优雅的艺术品一样,优秀的UI设计也可以大象无形,大象无形的意思是有意化无意.大象化无形!就是不要显刻意,不要过分的主张,要兼容百态.无形态无框架才能容纳一切形体! ...

  4. UI 设计的整个工作流程是怎样的?

    作为一个专业UI设计师,不仅仅要了解整个产品在UI界面设计,交互设计中的工作流程,更需要了解整个产品从需求提出到产品上线的整个工作流程. 以下是互联网产品个部门的工作分配及流程: 从图中可以看到,一个 ...

  5. UI设计初学者必看,这款设计神器教你快速入门

    网络时代,网页和手机App已经深入到人们生活的方方面面.这也使得App界面设计越来越受青年求职者们的青睐,并纷纷投入这个行业.但是,作为UI设计初学者,究竟如何才能快速的入门?当今市场上,是否有那么一 ...

  6. 不得不存!UI设计新手不可错过的7条实用法则

    http://www.gameres.com/316761.html 本文编译自 Medium,作者是一位UX(User Experience, 用户体验)设计师,他通过自己学习UI设计的过程,总结出 ...

  7. (转载)Android UI设计之AlertDialog弹窗控件

    Android UI设计之AlertDialog弹窗控件 作者:qq_27630169 字体:[增加 减小] 类型:转载 时间:2016-08-18我要评论 这篇文章主要为大家详细介绍了Android ...

  8. Android 腾讯入门教程( 智能手表UI设计 和 MVC模式 )

    *****注意到mvc 在android 中是如何进行分层分域执行各自的功能.**** 官方推荐的按钮尺寸是48像素 前端之Android入门(1):环境配置 前端之Android入门(2):程序目录 ...

  9. 2017年8个UI设计流行趋势

    设计趋势变化的理由需要考虑各种各样的因素.让我们来一起看看2017年的设计流行趋势吧. 应用界面的设计趋势是不断变化的.随着时间的推移他也在不断的成长,进化.虽然有些趋势还有待检验,但我们还是需要不断 ...

  10. APP UI设计及切图规范

    APP UI设计及切图规范 1.概述 1.1 编写目的 该文档主要针对移动端开发的视觉设计和开发过程中的工作环节做统一的规划规范,是系统进入UI设计的前置文档.部分内容来自网络收集修编,转载请注明由 ...

随机推荐

  1. ElasticSearch之cat plugins API

    命令样例如下: curl -X GET "https://localhost:9200/_cat/plugins?v=true&pretty" --cacert $ES_H ...

  2. Python——第五章:csv模块

    未来我们会使用爬虫获取到一些json文件,例如去英雄联盟官方爬取英雄的数据库 查看代码 {"hero":[{"heroId":"1",&qu ...

  3. Ubuntu搭建邮件服务器

    转载:原文链接 前言 关于邮件服务器的工作原理我就不再赘述了.Postfix是优秀的MTA,而Dovecot则是优秀的MDA.前者负责发信.收信,提供smtp服务:后者负责邮件保存到邮箱,提供pop3 ...

  4. C++ 观察者模式实现

    观察者模式 主体(被观察者)通知一个或多个观察者状态改变/数据更新/事件发生. 描述 C++ 实现观察者模式有几个要点: 观察者都有一个共同的抽象基类 Listener,定义了一个纯虚接口 OnNot ...

  5. GaussDB for DWS:内存自适应控制技术总结

    1.技术背景 在SQL语句复杂.处理数据量大的AP场景下,单个查询对内存的需求越来越大,多个语句的并发很容易将系统的内存吃满,造成内存不足的问题.为了应对这种问题,GaussDB for DWS引入了 ...

  6. 论文复现丨基于ModelArts进行图像风格化绘画

    摘要:这个 notebook 基于论文「Stylized Neural Painting, arXiv:2011.08114.」提供了最基本的「图片生成绘画」变换的可复现例子. 本文分享自华为云社区& ...

  7. 再谈P2P技术:网络拓扑结构、核心技术分析

    随着P2P应用的蓬勃发展,作为P2P应用中核心问题的发现技术除了遵循技术本身的逻辑以外,也受到某些技术的发展趋势.需求趋势的深刻影响. P2P协议概述 P2P打破了传统的Client/Server ( ...

  8. 总结MySQL 的一些知识点:MySQL 连接的使用

    MySQL 连接的使用 在前几章节中,我们已经学会了如何在一张表中读取数据,这是相对简单的,但是在真正的应用中经常需要从多个数据表中读取数据. 本章节我们将向大家介绍如何使用 MySQL 的 JOIN ...

  9. 十大 CI/CD 安全风险(四)

    在上一篇文章,我们着重介绍 PPE 风险,并提供缓解相关风险的安全建议与实践.在本篇文章中,我们将会了解凭据使用环境管理不善与不安全的系统配置,并给出相应的风险缓解建议. 凭据使用管理不善 由于与凭据 ...

  10. 引用 AspNetCoreRateLimit => StatusCode cannot be set because the response has already started.

    app.UseIpRateLimiting(); #需要放在前面,否则抓去不准,还有可能会出现下列错误 本次出现这个错误,是因为  .Net Core 跨域 里面的这行:httpContext.Res ...