首页 > 其他分享 >Qt5.9 UI设计(六)——TitleBar功能实现

Qt5.9 UI设计(六)——TitleBar功能实现

时间:2023-04-16 15:57:09浏览次数:41  
标签:hover QPushButton url image UI Qt5.9 border TitleBar png

前言

上一章介绍了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 公众号

标签:hover,QPushButton,url,image,UI,Qt5.9,border,TitleBar,png
From: https://www.cnblogs.com/liwen01/p/17323357.html

相关文章

  • Qt5.9 UI设计(七)——统一样式设计
    前言前面已经将UI设计部分实现,各页面也做了最简单的设计,本章介绍一下qss样式的使用。样式设计最终的显示效果如下图:操作步骤将stylesheet.qss样式文件添加进工程stylesheet.qss内容如下:/**********************MainWindowStyleSheet*******************/QMainWind......
  • Qt5.9 UI设计(一)——在win10系统上安装Qt5.9
    安装环境win10系统Qt5.9.0版本官方下载地址可以从官方网站获取:https://www.qt.io/zh-cn/现在的安装包跟以前的有些区别,加上网络比较慢,我这里演示的是Qt5.9.0版本的安装安装步骤直接双击qt-opensource-windows-x86-5.9.0.exe进行安装欢迎界面,直接点下一步登陆Qt账......
  • abp(net core)+easyui+efcore实现仓储管理系统——模块管理升级之上(六十一)
     Abp(netcore)+easyui+efcore实现仓储管理系统目录abp(netcore)+easyui+efcore实现仓储管理系统——ABP总体介绍(一)abp(netcore)+easyui+efcore实现仓储管理系统——解决方案介绍(二)abp(netcore)+easyui+efcore实现仓储管理系统——领域层创建实体(三) abp(netcore)+e......
  • uni-app:input的样式调整(hbuilderx 3.7.3)
    一,js代码:<template><view><inputclass="inputText"style="width:700rpx;height:76rpx;"v-model="mobile"placeholder="请输入手机号"></input>&l......
  • [MAUI]模仿微信“按住-说话”的交互实现
    @目录创建页面布局创建手势控件创建TalkBox创建动画拖拽物动画按钮激活动画TalkBox动画Layout动画项目地址.NETMAUI跨平台框架包含了识别平移手势的功能,在之前的博文[MAUI项目实战]手势控制音乐播放器(二):手势交互中利用此功能实现了pan-pit拖拽系统。简单来说就是拖拽物(pan......
  • Matlab:GUI基础
    GUI坐标轴只显示白色图框 ......
  • [oeasy]python00134_[趣味拓展]python起源_历史_Guido人生_ABC编程语言_Tanenbaum
    python历史回忆上次内容颜文字是kaomoji把字符变成一种图画的方法一层叠一层很多好玩儿的kaomoji是一层层堆叠起来的meme虚拟的表情也在真实世界有巨大影响一步步地影响字符编码就是这样一步步发展过来的python也是一步步发展到今天的python究竟是怎么发展的呢?......
  • Calibre GUI PV 流程介绍(0.8um BCD Process )
    Calibre规则名词解释设计规则检查:DesignRuleCheck,DRC版图&原理图一致性检查:LayoutVersusSchematics,LVS天线效应检查:Antennaeffect,ANT电学规则检查:ElectricalRuleChecking,ERC寄生参数提取:LayoutParameterExtraction,LPE注意1:需要加的CDL文件cdl器件文件放到网......
  • [oeasy]python00134_[趣味拓展]python起源_历史_Guido人生_ABC编程语言_Tanenbaum
    python历史回忆上次内容颜文字是kaomoji把字符变成一种图画的方法一层叠一层很多好玩儿的kaomoji是一层层堆叠起来的meme ​ 添加图片注释,不超过140字(可选) 虚拟的表情也在真实世界有巨大影响一步步地影响 ​......
  • BurpSuite设置上游代理访问内网
    转载原文原理知道了后,开始!拿到B的shell后,添加路由拿到B的shell后,开启sock4在D主机上设置好最后成功抓到包......