Qwt QwtWheel绘制滚动轮

2023-11-08 11:28
文章标签 绘制 滚动 qwt qwtwheel

本文主要是介绍Qwt QwtWheel绘制滚动轮,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.简介

QwtWheel 是一个用于实现滚动轮控件的类库。它基于 Qt 框架,并提供了一些方便的功能来处理滚动轮的事件和绘图。 QwtWheel 类继承自 QWidget类,用于定义滚动轮控件的通用行为。QwtWheel 添加了特定于滚动轮的功能。 QwtWheel 可以用于创建具有滚动功能的自定义控件。如在图形界面中,可以使用滚动轮控件来调整数值。

使用 QwtWheel,可以实现以下功能:

  • 捕获滚动轮事件:QwtWheel 提供了滚动轮事件的处理函数,可以捕获滚动轮的旋转事件,并根据事件的类型执行相应的操作。
  • 设置滚动轮的范围:可以设置滚动轮的最小值和最大值。这样,在滚动轮事件中可以根据范围进行值的计算和处理。
  • 设置滚动轮的步长:可以设置滚动轮每次旋转的步长。这样,在滚动轮事件中可以根据步长进行值的增减操作。
  • 自定义绘图:QwtWheel 提供了绘制滚动轮控件的接口,可以根据需要自定义滚动轮的外观和展示效果。

总结来说,QwtWheel 是一个用于实现滚动轮控件的类库,它提供了一些方便的功能来处理滚动轮的事件和绘图。可以使用 QwtWheel 来创建滚动功能的自定义控件,实现数值调整、选项选择等功能。

2.常用接口

void setOrientation (Qt::Orientation) 设置方向

void setInverted (bool) 启用/禁用倒置外观

void setRange (double min, double max) 设置范围

void setSingleStep (double) 设置步长

void setPageStepCount (int) 设置页面步数

3.示例

 自定义WheelBox类

#pragma once#include <QWidget>class QwtWheel;
class QLabel;
class QLCDNumber;class WheelBox : public QWidget
{Q_OBJECTQ_PROPERTY( QColor theme READ theme WRITE setTheme )
public:WheelBox( const QString& title,double min, double max, double stepSize,QWidget* parent = NULL );void setTheme( const QColor& );QColor theme() const;void setUnit( const QString& );QString unit() const;void setValue( double value );double value() const;Q_SIGNALS:double valueChanged( double );private:QLCDNumber* m_number;QwtWheel* m_wheel;QLabel* m_label;QString m_unit;
};#include "WheelBox.h"
#include "qwt_wheel.h"
#include <QLabel>
#include <QLCDNumber>
#include <QLayout>
#include <QWheelEvent>
#include <QApplication>namespace
{class Wheel : public QwtWheel{public:Wheel( QWidget* parent ): QwtWheel( parent ), m_ignoreWheelEvent( false ){setFocusPolicy( Qt::WheelFocus );parent->installEventFilter( this );}virtual bool eventFilter( QObject* object, QEvent* event ) QWT_OVERRIDE{if ( event->type() == QEvent::Wheel && !m_ignoreWheelEvent ){const QWheelEvent* we = static_cast< QWheelEvent* >( event );const QPoint pos = wheelRect().center();QWheelEvent wheelEvent(pos, we->delta(),we->buttons(), we->modifiers(),we->orientation() );m_ignoreWheelEvent = true;QApplication::sendEvent( this, &wheelEvent );m_ignoreWheelEvent = false;return true;}return QwtWheel::eventFilter( object, event );}private:bool m_ignoreWheelEvent;};
}WheelBox::WheelBox( const QString& title,double min, double max, double stepSize, QWidget* parent ): QWidget( parent )
{m_number = new QLCDNumber();m_number->setSegmentStyle( QLCDNumber::Filled );m_number->setAutoFillBackground( true );m_number->setFixedHeight( m_number->sizeHint().height() * 2 );m_number->setFocusPolicy( Qt::WheelFocus );QPalette pal( Qt::black );pal.setColor( QPalette::WindowText, Qt::green );m_number->setPalette( pal );m_wheel = new Wheel( this );m_wheel->setOrientation( Qt::Vertical );m_wheel->setInverted( true );m_wheel->setRange( min, max );m_wheel->setSingleStep( stepSize );m_wheel->setPageStepCount( 5 );m_wheel->setFixedHeight( m_number->height() );m_number->setFocusProxy( m_wheel );QFont font( "Helvetica", 10 );font.setBold( true );m_label = new QLabel( title );m_label->setFont( font );QHBoxLayout* hLayout = new QHBoxLayout;hLayout->setContentsMargins( 0, 0, 0, 0 );hLayout->setSpacing( 2 );hLayout->addWidget( m_number, 10 );hLayout->addWidget( m_wheel );QVBoxLayout* vLayout = new QVBoxLayout( this );vLayout->addLayout( hLayout, 10 );vLayout->addWidget( m_label, 0, Qt::AlignTop | Qt::AlignHCenter );connect( m_wheel, SIGNAL(valueChanged(double)),m_number, SLOT(display(double)) );connect( m_wheel, SIGNAL(valueChanged(double)),this, SIGNAL(valueChanged(double)) );
}void WheelBox::setTheme( const QColor& color )
{m_wheel->setPalette( color );
}QColor WheelBox::theme() const
{return m_wheel->palette().color( QPalette::Window );
}void WheelBox::setValue( double value )
{m_wheel->setValue( value );m_number->display( value );
}double WheelBox::value() const
{return m_wheel->value();
}

使用:创建两个滚轮,一个显示整数,一个显示小数

#include "WheelBoxWidget.h"
#include "ui_WheelBoxWidget.h"
#include "WheelBox.h"WheelBoxWidget::WheelBoxWidget(QWidget *parent) :QWidget(parent),ui(new Ui::WheelBoxWidget)
{ui->setupUi(this);WheelBox *w1 = new WheelBox( "Displayed [s]", 1.0, 100.0, 1.0 );w1->setValue( 10 );WheelBox *w2 = new WheelBox( "Sample Interval [ms]", 0.0, 20.0, 0.1 );w2->setValue( 10.0 );ui->verticalLayout->addWidget(w1);ui->verticalLayout->addWidget(w2);
}WheelBoxWidget::~WheelBoxWidget()
{delete ui;
}

4.相关推荐

Qwt QwtKnob绘制旋钮-CSDN博客

Qwt 使用QwtCompass绘制指南针-CSDN博客

Qwt 使用QwtDial绘制汽车仪表盘-CSDN博客

Qwt QwtThermo绘制温度计-CSDN博客 

这篇关于Qwt QwtWheel绘制滚动轮的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/369536

相关文章

使用Python绘制3D堆叠条形图全解析

《使用Python绘制3D堆叠条形图全解析》在数据可视化的工具箱里,3D图表总能带来眼前一亮的效果,本文就来和大家聊聊如何使用Python实现绘制3D堆叠条形图,感兴趣的小伙伴可以了解下... 目录为什么选择 3D 堆叠条形图代码实现:从数据到 3D 世界的搭建核心代码逐行解析细节优化应用场景:3D 堆叠图

html 滚动条滚动过快会留下边框线的解决方案

《html滚动条滚动过快会留下边框线的解决方案》:本文主要介绍了html滚动条滚动过快会留下边框线的解决方案,解决方法很简单,详细内容请阅读本文,希望能对你有所帮助... 滚动条滚动过快时,会留下边框线但其实大部分时候是这样的,没有多出边框线的滚动条滚动过快时留下边框线的问题通常与滚动条样式和滚动行

uniapp小程序中实现无缝衔接滚动效果代码示例

《uniapp小程序中实现无缝衔接滚动效果代码示例》:本文主要介绍uniapp小程序中实现无缝衔接滚动效果的相关资料,该方法可以实现滚动内容中字的不同的颜色更改,并且可以根据需要进行艺术化更改和自... 组件滚动通知只能实现简单的滚动效果,不能实现滚动内容中的字进行不同颜色的更改,下面实现一个无缝衔接的滚动

QT6中绘制UI的两种方法详解与示例代码

《QT6中绘制UI的两种方法详解与示例代码》Qt6提供了两种主要的UI绘制技术:​​QML(QtMeta-ObjectLanguage)​​和​​C++Widgets​​,这两种技术各有优势,适用于不... 目录一、QML 技术详解1.1 QML 简介1.2 QML 的核心概念1.3 QML 示例:简单按钮

Python使用Matplotlib绘制3D曲面图详解

《Python使用Matplotlib绘制3D曲面图详解》:本文主要介绍Python使用Matplotlib绘制3D曲面图,在Python中,使用Matplotlib库绘制3D曲面图可以通过mpl... 目录准备工作绘制简单的 3D 曲面图绘制 3D 曲面图添加线框和透明度控制图形视角Matplotlib

禁止HTML页面滚动的操作方法

《禁止HTML页面滚动的操作方法》:本文主要介绍了三种禁止HTML页面滚动的方法:通过CSS的overflow属性、使用JavaScript的滚动事件监听器以及使用CSS的position:fixed属性,每种方法都有其适用场景和优缺点,详细内容请阅读本文,希望能对你有所帮助... 在前端开发中,禁止htm

使用Python绘制蛇年春节祝福艺术图

《使用Python绘制蛇年春节祝福艺术图》:本文主要介绍如何使用Python的Matplotlib库绘制一幅富有创意的“蛇年有福”艺术图,这幅图结合了数字,蛇形,花朵等装饰,需要的可以参考下... 目录1. 绘图的基本概念2. 准备工作3. 实现代码解析3.1 设置绘图画布3.2 绘制数字“2025”3.3

使用Python绘制可爱的招财猫

《使用Python绘制可爱的招财猫》招财猫,也被称为“幸运猫”,是一种象征财富和好运的吉祥物,经常出现在亚洲文化的商店、餐厅和家庭中,今天,我将带你用Python和matplotlib库从零开始绘制一... 目录1. 为什么选择用 python 绘制?2. 绘图的基本概念3. 实现代码解析3.1 设置绘图画

Python绘制土地利用和土地覆盖类型图示例详解

《Python绘制土地利用和土地覆盖类型图示例详解》本文介绍了如何使用Python绘制土地利用和土地覆盖类型图,并提供了详细的代码示例,通过安装所需的库,准备地理数据,使用geopandas和matp... 目录一、所需库的安装二、数据准备三、绘制土地利用和土地覆盖类型图四、代码解释五、其他可视化形式1.

如何用Python绘制简易动态圣诞树

《如何用Python绘制简易动态圣诞树》这篇文章主要给大家介绍了关于如何用Python绘制简易动态圣诞树,文中讲解了如何通过编写代码来实现特定的效果,包括代码的编写技巧和效果的展示,需要的朋友可以参考... 目录代码:效果:总结 代码:import randomimport timefrom math