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实现滑动窗口和悬浮按钮的更多相关文章

  1. QSplitter实现自由伸缩滑动窗口部件(要在m_pSplitter中加入frame_4之前,给frame_4设置样式;之后设置无效)

    实现代码如下: #include <QSplitter> QSplitter *m_pSplitter; m_pSplitter = new QSplitter(ui->frame_ ...

  2. 在TableView上添加悬浮按钮

    如果直接在TableVIewController上贴Button的话会导致这个会随之滚动,下面解决在TableView上实现位置固定悬浮按钮的两种方法: 1.在view上贴tableView,然后将悬 ...

  3. Android用悬浮按钮实现翻页效果

    今天给大家分享下自己用悬浮按钮点击实现翻页效果的例子. 首先,一个按钮要实现悬浮,就要用到系统顶级窗口相关的WindowManager,WindowManager.LayoutParams.那么在An ...

  4. 如何在TableView上添加悬浮按钮

    如果直接在TableVIewController上贴Button的话会导致这个会随之滚动,下面解决在TableView上实现位置固定悬浮按钮的两种方法: 1.在view上贴tableView,然后将悬 ...

  5. [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 ...

  6. TCP/IP 协议中的滑动窗口

    一个例子明白发送缓冲区.接受缓冲区.滑动窗口协议之间的关系. 在上面的几篇文章中简单介绍了上述几个概念在TCP网络编程中的关系,也对应了几个基本socket系统调用的几个行为,这里再列举一个例子,由于 ...

  7. Storm Windowing storm滑动窗口简介

    Storm Windowing 简介 Storm可同时处理窗口内的所有tuple.窗口可以从时间或数量上来划分,由如下两个因素决定: 窗口的长度,可以是时间间隔或Tuple数量: 滑动间隔(slidi ...

  8. lintcode 滑动窗口的最大值(双端队列)

    题目链接:http://www.lintcode.com/zh-cn/problem/sliding-window-maximum/# 滑动窗口的最大值 给出一个可能包含重复的整数数组,和一个大小为  ...

  9. TCP 三次握手四次挥手, ack 报文的大小.tcp和udp的不同之处、tcp如何保证可靠的、tcp滑动窗口解释

    一.TCP三次握手和四次挥手,ACK报文的大小 首先连接需要三次握手,释放连接需要四次挥手 然后看一下连接的具体请求: [注意]中断连接端可以是Client端,也可以是Server端. [注意] 在T ...

随机推荐

  1. Golang字符串格式化

    Go对字符串格式化提供了良好的支持.下面我们看些常用的字符串格式化的例子. package main import ( "fmt" "os" ) type po ...

  2. ElasticSearch vs Solr多维度分析对比

    福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号:   大数据躺过的坑      Java从入门到架构师      人工智能躺过的坑         Java全栈大联盟   ...

  3. TCP/IP 最常见的错误原因码 (errno)列表

    对于在基于 UNIX 的环境中的 TCP/IP 用户,下表列出了某些最常见的错误原因码 (errno).它不是完整的错误列表.可以在文件 /usr/include/sys/errno.h 中找到 Er ...

  4. opencv学习之路(4)、Mat类介绍,基本绘图函数

    一.Mat类创建 Mat img;//创建无初始化矩阵 Mat img1(,,CV_8UC1);//200行,100列(长200,宽100) Mat img2(Size(,),CV_8UC3,Scal ...

  5. Oracle分析函数简析

    oracle的分析函数over(Partition by...) Sql代码 over(Partition by...) 一个超级牛皮的ORACLE特有函数. 最近工作中才接触到这个功能强大而灵活的函 ...

  6. vS+QT生成.pro文件

  7. Java——List:list.add(index, element)和list.set(index, element)的区别

    add(index, element) 含义:在集合索引为index的位置上增加一个元素element,集合list改变后list.size()会增加1 用法 testList.add(index, ...

  8. emmc和ssd的区别【转】

    本文转载自:https://blog.csdn.net/hawk_lexiang/article/details/78228789 emmc和ssd eMMC和SSD主要是满足不同需求而发展出来的NA ...

  9. JXOI2018守卫 区间DP

    链接 https://loj.ac/problem/2545 思路 f[i][j]表示i到j区间的最小监视人数 可以预处理出来g[i][j],表示i能否监视到j (其实预处理的关系不大,完全可以直接判 ...

  10. 黄金连分数|2013年蓝桥杯B组题解析第四题-fishers

    黄金连分数 黄金分割数0.61803... 是个无理数,这个常数十分重要,在许多工程问题中会出现.有时需要把这个数字求得很精确. 对于某些精密工程,常数的精度很重要.也许你听说过哈勃太空望远镜,它首次 ...