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 ...
随机推荐
- P3317 [SDOI2014]重建(Matrix-tree+期望)
P3317 [SDOI2014]重建 详情看这位神犇的blog 剩下的注释在code里吧....... #include<iostream> #include<cstdio> ...
- P3302 [SDOI2013]森林(主席树+启发式合并)
P3302 [SDOI2013]森林 主席树+启发式合并 (我以前的主席树板子是错的.......坑了我老久TAT) 第k小问题显然是主席树. 我们对每个点维护一棵包含其子树所有节点的主席树 询问(x ...
- epoll的水平触发和边缘触发,以及边缘触发为什么要使用非阻塞IO
转自:http://www.cnblogs.com/yuuyuu/p/5103744.html 一.基本概念 ...
- ReentrantLock$Sync.tryRelease java.lang.IllegalMonitorStateException
早上一来,例行性的看主要环境的运行情况,发现有个环境中有如下异常: 17-02-28 08:13:37.368 ERROR pool-2-thread-65 com.ld.net.spider.Spi ...
- linux 计划任务 crontab 简单用法
添加计划任务: 方法1: crontab -e 方法2: vim /etc/crontab #这种方式进去的文件有个sample可供参考 查看已经启动的任务:crontab -l 查看运行状态:ser ...
- 18种CSS3loading效果完整版
今天把之前分享的两篇博客<CSS3实现10种Loading效果>和 <CSS3实现8种Loading效果[二]>整理了一下.因为之前所分享的各种loading效果都只是做了we ...
- UVa 11019 Matrix Matcher - Hash
题目传送门 快速的vjudge传送门 快速的UVa传送门 题目大意 给定两个矩阵S和T,问T在S中出现了多少次. 不会AC自动机做法. 考虑一维的字符串Hash怎么做. 对于一个长度为$l$的字符串$ ...
- Codeforces Round #427 (Div. 2) Problem A Key races (Codeforces 835 A)
Two boys decided to compete in text typing on the site "Key races". During the competition ...
- Linux服务器搭建Nexus-Maven私服(适合新手比较基础)
背景 在使用maven构建项目的时候,几乎都会涉及到一个“私服”的概念,那么到底什么是私服?使用私服有能够带来哪些益处? 私服:私服是指私有服务器,是架设在局域网的一种特殊的远程仓库,目的是代理远程仓 ...
- EControl的安装
EControl提供了运行期在窗体上进行界面设计的能力,手上的控件包是Delphi2010版的,在xe6下安装出现了一系列问题,弄了一晚上,总算搞定. 1.编译zDesign14.bpl包,修改DSN ...