使用QSlider
1、当绘制的线性图等需要水平拖动的时候(不用qwt里面的函数),可以用QSlider,代码如下
ui.horizontalSlider->setMaximum(); //需要拖动的越缓慢,平滑它的值就设置得越大
ui.horizontalSlider->setSingleStep(); //拖动的最小单位 QObject::connect(ui.horizontalSlider, SIGNAL(valueChanged(int)), this, SLOT(sliderMovedSlot(int))); //在槽函数中改变qwt的横坐标显示范围
QObject::connect(ui.horizontalSlider, SIGNAL(sliderPressed()), this, SLOT(sliderPressSlot()));
QObject::connect(ui.horizontalSlider, SIGNAL(sliderReleased()), this, SLOT(sliderReleaseSlot()));
/*滑条按下*/
void RoadAllData::sliderPressSlot()
{
SLIDER_RUNNING = true; //滑条正在拖动,这个时候在添加曲线的点的地方,将不会改变曲线显示的范围(setRange)
realLeft = ui.customPlot->xAxis->range().lower; //获取当前显示曲线的窗口的最小横坐标
realRight = ui.customPlot->xAxis->range().upper; //最大横坐标
}
/*滑条释放*/
void RoadAllData::sliderReleaseSlot()
{
SLIDER_RUNNING = false; //滑条停止滑动
if (!FILEOPENING)//不是打开数据库,而是实时更新的状态
{
ui.horizontalSlider->setValue(ui.horizontalSlider->maximum());
}
}
/*滑条滑动响应的槽函数*/
void RoadAllData::sliderMovedSlot(int value)
{
if (FILEOPENING)
{
double min = graphData[][];
double max = graphData[][graphData[].size() - ];
double left = , right = ;//需要显示在界面的范围
double tmp = ;
//获取left、right
if (UP_LINE_WAY)
{
tmp = value / (ui.horizontalSlider->maximum()*1.0) * (abs(max - min)) + min;
left = tmp;
right = tmp+0.3;
}
else
{
tmp = min - value / (ui.horizontalSlider->maximum()*1.0) * (abs(max - min));
left = tmp;
right = tmp - 0.3;
}
//qDebug() << left << right <<" "<< min << max;
//设置显示范围
ui.qwtPlot->xAxis->setRange(left, right);
ui.qwtPlot->replot();
}
}
2、实现qwt动态加载图片的时候,可以拖动水平滚动条查看历史数据(不受数据实时更新的影响)
else//实时
{
//获取left、right
if (UP_LINE_WAY) //上行,横坐标递增
{
tmp = realRight - (ui.horizontalSlider->maximum() - value) / (ui.horizontalSlider->maximum()*1.0) * (realRight-realFirst);//realRight是指qwt曲线当前屏幕range的最大值,realFirst是指曲线的起点
right = tmp;
left = tmp - 0.3;
}
else //下行,横坐标递减
{
tmp = realLeft + (ui.horizontalSlider->maximum() - value) / (ui.horizontalSlider->maximum()*1.0) * (realFirst - realLeft);//realLeft指的是当前屏幕range的最大值。
right = tmp;
left = tmp + 0.3;
}
qDebug() << "left:" << left << "right:" << right<<"value:"<<value;
//设置显示范围
ui.customPlot->xAxis->setRange(left, right);
ui.customPlot->replot();
} /*x轴设置反向或者正向*/
ui.customPlot->xAxis->setRangeReversed(true);//x轴反向
ui.customPlot->xAxis->setRangeReversed(false);//x轴正向
使用QSlider的更多相关文章
- QSpinBox 和 QSlider 联合使用方法
在Qt中,有时候我们想要联合QSpinBox 和 QSlider,使得移动滑块,QSpinBox中的数据会变化,或者我们在QSpinBox中输入一个数值,响应的滑块也会变化,如下图所示:
- Qt自定义带游标的slider,在滑块正上方显示当前值(非常有意思,继承QSlider之后增加一个QLabel,然后不断移动它)
首先自定义QSlider的子类MyCustomSlider,如下所示. mycustomslider.h #ifndef MYCUSTOMSLIDER_H #define MYCUSTOMSLIDER ...
- QSlider解决点击不能到该位置问题
方法一:可以继承重写一个QSlider 方法二:1.instaneventfiliter(this);slider安装一个事件过滤器 2.在eventfilter(QObject *,QEvent*) ...
- 七、PyQT5控件——QSlider,QSpinBox
一.Qslider QSlider是一个滑动条,可以设置成水平或垂直放置.最常用的方法允许用户在某一范围内互动该滑块,并将滑块的位置转换成一个整数值(int类型),这种方式可以在某一个范围内平顺的变动 ...
- Qt基础学习---滑动条之QSlider
Qt滑动条基本用法: //mydialog.h #ifndef MYDIALOG_H #define MYDIALOG_H #include <QDialog> class QLineEd ...
- 滑动条QSlider
QSlider只提供整数范围 滑块接受Tab键的焦点,并同时提供了一个鼠标滚轮和键盘接口.键盘接口如下: Left/Right 移动水平滑块一个步长.Up/Down 移动垂直滑块一个步长.PageUp ...
- 【PyQt5-Qt Designer】QSlider滑块
QSlider滑块 QSlider简介 QSlider小部件提供了一个垂直或水平滑块. 滑块是控制有界值的经典控件.它允许用户沿水平或垂直凹槽移动滑块手柄,并将手柄的位置转换为合法范围内的整数值. Q ...
- QScrollBar & QSlider & QDial
[1]滚动条 & 滑块 & 表盘 Qt示例工程: (1)slidergroup.h #include <QGroupBox> QT_BEGIN_NAMESPACE clas ...
- Qt基础学习(3)-----滑动条之QSlider
//mydialog.h #ifndef MYDIALOG_H #define MYDIALOG_H #include <QDialog> class QLineEdit; class Q ...
- Qt中QSlider的样式表设置
转自: https://blog.csdn.net/tax10240809163com/article/details/50899023 //首先是设置主体QSlider{border-color: ...
随机推荐
- 线性dp——1197D
一开始没有什么头绪,后来注意到m<=10,考虑是否可以用dp[i][j]表示第i位,前面跟了j个数的最大值 那么第i+1个数,直接和第i个数的[0,m]的m+1种状态去转移即可,如果是由0或m状 ...
- .net 实用小技巧
Linq 实现in查询 Dictionary<int, IP> dict = new Dictionary<int, IP>(); dict.Add(1, new IP(&qu ...
- sublime 文件无法拖放
sublime 文件无法拖放解决方法 https://github.com/emetio/pyv8-binaries 解决: 1. 去gihub下载 PyV8,连接地址:https://github. ...
- 20140506 visio 画布大小 栈实现队列 堆空闲内存地址链表 堆最大可分配的内存 可用内存链表
1.调整visio的画布大小 按住Ctrl鼠标移动到画布边缘即可 2.两个栈实现一个队列 一个栈用于入队,一个用于出队 #include<iostream> #include<sta ...
- python-selenium -- 弹出框处理
弹出框有两种:页面弹出框(可定位元素能操作).Windows弹出框(不能直接定位) 一.页面弹出框 等待弹出框出现之后,定位弹出框,操作其中元素 如: driver = webdriver.Chrom ...
- react 父子组件传值
父组件向子组件传递信息 父组件片段 constructor(props){ super(props) this.state={ message:"我是父组件传来的" } } ren ...
- unicode_stop - 撤销控制台unicode模式(例如, 回到8-bit模式).
总览 unicode_stop 描述 unicode_stop 撤销以前 unicode_start(1) 命令的效果, 将显示屏和键盘设回到 8-bit 模式.
- shell脚本实现批量端口扫描
#!/bin/bash # Telnet Batach readonly TMOUT= ip_prefix="192.168" ip_network_range="80- ...
- 论文阅读笔记:《Generating Question-Answer Hierarchies》
题目: <Generating Question-Answer Hierarchies> 作者: Kalpesh Krishna & Mohit Iyyer What: 1.SQU ...
- openwrt usb
fdisk -l #以列表的形式,列出当前挂载盘的情况 for 属性规定 label 与哪个表单元素绑定 <form> <label for="male"> ...