使用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: ...
随机推荐
- Tomcat服务器配置参考
Coyote HTTP/1.1 Connector 概述 Coyote HTTP/1.1 Connector元素是一个支持HTTP/1.1协议的Connector组件.它使Catalina除了能够执行 ...
- 21、Linux命令对服务器网络进行监控
带宽在我们性能测试中是非常重要的一个因素,带宽的理论上传/下载速度是可以进行推算的.比如你的带宽是10m,那么上传/下载理论速度是10/8=1.25m/s.举个例子,服务器上一个文件大小1.25M,我 ...
- 通过Module读取寄存器的值
1: int eax; 2: _asm_("nop":"=a"(eax)); 3: printk("Get Eax Value:\n"); ...
- (转载)理解和使用Promise.all和Promise.race
声明:本文转载自:https://www.jianshu.com/p/7e60fc1be1b2 一.Pomise.all的使用 Promise.all可以将多个Promise实例包装成一个新的Prom ...
- 关于Visual Leak Detector的配置与使用 (测试vector 引起的内存泄漏问题)
之前在做一个音频特征提取的批量处理程序,老是出现内存泄露问题,用Visual Leak Detector(VLD)工具做了下检测,检测出了一些问题,解决后还是会有问题.之后继续排查,因为我的代码中,大 ...
- Red Hat Enterprise Linux 7.7 使用最小化安装后,怎么安装桌面的解决方法
准备工具: xshell6,xftp6,到官网(https://www.netsarang.com/zh/downloading/)进行下载,教育版的,个人使用 虚拟机安装教程百度即可,安装时有两个重 ...
- 一、微服务概述与SpringCloud
一.微服务概述与SpringCloud 1.微服务与微服务架构 微服务强调的是服务的大小,它关注的是某一个点,是具体解决某一个问题/提供落地对应服务的一个服务应用,狭意的看,可以看作Eclipse里面 ...
- Selenium3 + Python3自动化测试系列八——警告框处理和下拉框选择
警告框处理 在WebDriver中处理JavaScript所生成的alert.confirm以及prompt十分简单,具体做法是使用 switch_to.alert 方法定位到 alert/confi ...
- 利用MySqlBulkLoader生成csv文件,批量添加数据
DataTable dt = new DataTable(); dt.Columns.Add("Id", typeof(int)); dt.Columns.Add("Yw ...
- 前端自动化构建工具——gulp环境搭建教程
gulp是前端工程化的工具,它可以对html,css,js等代码和图片进行压缩,也可以对sass和less等预处理语言进行编译,代码部署.gulp学起来简单,用起来方便,大大提高我们工作效率. 这里可 ...