QSplitter实现滑动窗口和悬浮按钮
1 QSplitter实现滑动窗口和悬浮按钮
软件应用中需要设计右侧滑动窗口,通过一个按钮来实现窗口的隐藏和显示,应用场景比如显示主界面的详细信息。
(1) 在qt design中添加QSplitter,添加主窗口界面和右侧滑动窗口界面。

(2) 在程序中添加浮动按钮,并在初始化中设置按钮的属性
m_btnFold.setParent(this);
m_btnFold.setFocusPolicy(Qt::NoFocus);
m_btnFold.setFixedSize(16, 78);//设置大小
m_btnFold.setIconSize(m_btnFold.size());
m_btnFold.move(this->width() - m_btnFold.width(), (this->height() - m_btnFold.height()) / 2);//设置移动位置
m_btnFold.setStyleSheet("border:0px;border-style:outset;");//设置无边框
m_btnFold.setFlat(true);//设置扁平按钮
m_btnFold.setVisible(true);//设置可见
m_btnFold.setStyleSheet("background:url(:/qss/image/unfoldbtn.png);border: 0px;");//设置背景图片,图片需先加入工程资源中
m_btnFold.show();
m_btnFold.setToolTip("展开详情");
(3) 添加按钮的响应函数
connect(&m_btnFold, SIGNAL(clicked()), this, SLOT(DisplayFoldWidget()));
void SpliterWidget::DisplayFoldWidget()
{
if (m_bfoldOpen == false)
{
m_btnFold.setToolTip("收起详情");
m_bfoldOpen = true;
ui.alarmDetailWidget->setVisible(true);//展示右侧滑动窗口
m_btnFold.move(this->width()-ui.alarmDetailWidget->width() - m_btnFold.width(), (this->height() - m_btnFold.height()) / 2);
m_btnFold.setStyleSheet("background:url(:/qss/image/foldbtn.png);border: 0px;");//重新移动按钮位置
}
else if (m_bfoldOpen == true)
{
m_btnFold.setToolTip("展开详情");
m_bfoldOpen = false;
ui.alarmDetailWidget->setVisible(false);//右侧滑动窗口
m_btnFold.move(this->width() - m_btnFold.width(), (this->height() - m_btnFold.height()) / 2);
m_btnFold.setStyleSheet("background:url(:/qss/image/unfoldbtn.png);border: 0px;");//改变按钮图标方向
}
}
(4) 窗口放大缩小的时候还要重新确定按钮的位置,所以要重写大小改变函数。
void resizeEvent(QResizeEvent* size);
void SpliterWidget::resizeEvent(QResizeEvent* size)
{
int winwidth= ui.alarmCenter->window()->width();
QList<int> spliteList;
spliteList.append(winwidth - 320);
spliteList.append(320);//右侧固定大小为320
ui.splitterLR->setSizes(spliteList);
m_btnFold.setVisible(true);
m_btnFold.show();
if (m_bfoldOpen==true)//移动按钮位置
{
m_btnFold.move(this->width()-ui.alarmDetailWidget->width()-m_btnFold.width() , (this->height() - m_btnFold.height()) / 2);
}
else
{
m_btnFold.move(this->width() - m_btnFold.width(), (this->height() - m_btnFold.height()) / 2);
}
}

QSplitter实现滑动窗口和悬浮按钮的更多相关文章
- QSplitter实现自由伸缩滑动窗口部件(要在m_pSplitter中加入frame_4之前,给frame_4设置样式;之后设置无效)
实现代码如下: #include <QSplitter> QSplitter *m_pSplitter; m_pSplitter = new QSplitter(ui->frame_ ...
- 在TableView上添加悬浮按钮
如果直接在TableVIewController上贴Button的话会导致这个会随之滚动,下面解决在TableView上实现位置固定悬浮按钮的两种方法: 1.在view上贴tableView,然后将悬 ...
- Android用悬浮按钮实现翻页效果
今天给大家分享下自己用悬浮按钮点击实现翻页效果的例子. 首先,一个按钮要实现悬浮,就要用到系统顶级窗口相关的WindowManager,WindowManager.LayoutParams.那么在An ...
- 如何在TableView上添加悬浮按钮
如果直接在TableVIewController上贴Button的话会导致这个会随之滚动,下面解决在TableView上实现位置固定悬浮按钮的两种方法: 1.在view上贴tableView,然后将悬 ...
- [LeetCode] Sliding Window Maximum 滑动窗口最大值
Given an array nums, there is a sliding window of size k which is moving from the very left of the a ...
- TCP/IP 协议中的滑动窗口
一个例子明白发送缓冲区.接受缓冲区.滑动窗口协议之间的关系. 在上面的几篇文章中简单介绍了上述几个概念在TCP网络编程中的关系,也对应了几个基本socket系统调用的几个行为,这里再列举一个例子,由于 ...
- Storm Windowing storm滑动窗口简介
Storm Windowing 简介 Storm可同时处理窗口内的所有tuple.窗口可以从时间或数量上来划分,由如下两个因素决定: 窗口的长度,可以是时间间隔或Tuple数量: 滑动间隔(slidi ...
- lintcode 滑动窗口的最大值(双端队列)
题目链接:http://www.lintcode.com/zh-cn/problem/sliding-window-maximum/# 滑动窗口的最大值 给出一个可能包含重复的整数数组,和一个大小为 ...
- TCP 三次握手四次挥手, ack 报文的大小.tcp和udp的不同之处、tcp如何保证可靠的、tcp滑动窗口解释
一.TCP三次握手和四次挥手,ACK报文的大小 首先连接需要三次握手,释放连接需要四次挥手 然后看一下连接的具体请求: [注意]中断连接端可以是Client端,也可以是Server端. [注意] 在T ...
随机推荐
- oracle审计例子
1.数据库开启审计alter system set audit_trail=db,extended scope=spfile;shutdown immediatestartup 2.对某个表进行审计c ...
- mysql 水平分表技术
这里做的是我的一个笔记. 水平分表比较简单, 理解就是: 合并的表使用的必须是MyISAM引擎 表的结构必须一致,包括索引.字段类型.引擎和字符集 数据表 user1 CREATE TABLE `us ...
- java的MVC与C#
Views: @{ Layout = "~/Views/Shared/_Layout.cshtml"; } @{ ViewBag.Title = "Index" ...
- 桌面版Ubuntu系统固定IP设置和Network-manager设置
我自己的学校是绑定MAC和IP上网的.这种方法名义上说是为了安全,不过是个搞计算机的都知道随便修改一下MAC就可以使用别人的IP了. 不提蛋疼的事情了,先来说说网络的配置吧 我用的是Ubuntu14. ...
- 【python54--爬虫2】
1.有道翻译 ''' |-- 代码思路解析: |-- 1.拿到网址首先查看network内Headers的:Request URL:User-Agent:From Data,这几个就是代码所需要的ur ...
- 怎么删除git本地分支以及Bitbucket的远程分支?
1. 如果分支只是本地分支,则可以使用 -d (如果分支已合并),例如 git branch -d <branch name>如果分支包含不计划合并的代码,请改用 -D (即使有没有mer ...
- Flask学习【第8篇】:flask-session组件
简介 flask-session是flask框架的session组件,由于原来flask内置session使用签名cookie保存,该组件则将支持session保存到多个地方,如 redis:保存数据 ...
- tp框架中的一些疑点知识-6
vim自带一个目录浏览器,使用命令:E就可以调出来,实际上就是浏览器的名字就是"网络读写"netrw vim也自带了 补全功能, 启动键是 "ctrl_N" 或 ...
- YII框架的使用
YII框架的使用 spit: 吐痰,吐口水, 过去式: spat spat: 本身也可以作为一个单词, 意思是: "小打小闹""小的吵闹""小争吵&q ...
- hihoCoder week1 最长回文子串
题目链接 https://hihocoder.com/contest/hiho1/problem/1 做法 Manacher #include <bits/stdc++.h> using ...