开发者社区> 范大脚脚> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Qt Widgets——抽象滑块及其继承类

简介:
+关注继续查看

三个可视类的默认外观分别如下(win7):它们的滑块都处于最小值0处。

 

理解QAbstractSlider时

可将它想成就是QScrollBar(该小部件的外观比较多地拥有QAbstractSlider属性):

属性列表如下:

 

不进行人为设置时的默认值如下:

公有函数主要是对以上属性的赋值或取值,列表如下:(以横向滚动条(图中右上角那个)说明)

复制代码
QAbstractSlider(QWidget * parent = 0)  
~QAbstractSlider()  
  
//基本使用,需要设置以下几项  
void    setMinimum(int)//滑块处于最左端时它代表的值  
void    setMaximum(int)//滑块处于最右端时它代表的值  
void    setSingleStep(int)//单击左或右小箭头时,滑块变化的长度  
void    setPageStep(int)  
void    setSliderPosition(int)//设置滑块初始化后处的位置  
//特殊要求时,需要设置以下  
void    setTracking(bool enable)//设置是否追踪,默认true,追踪时,只要滑块值在改变,它就不断发出信号(较多次),false时,只在松开滑块值改变时才发出(较少次)具体可试试例子的输出  
void    setInvertedAppearance(bool)//设置成true后,最大最小值位置调换,且点击箭头时,滑块向相反方向走  
void    setInvertedControls(bool)  
void    setSliderDown(bool)  
//以下取回值,绝大部分与以上对应  
int value() const  
int maximum() const  
int minimum() const  
int singleStep() const  
int pageStep() const  
int sliderPosition() const  
  
bool    hasTracking() const  
bool    invertedAppearance() const  
bool    invertedControls() const  
bool    isSliderDown() const  
  
void    triggerAction(SliderAction action)  
Qt::Orientation     orientation() const  
复制代码

公有槽函数如下:

void    setOrientation(Qt::Orientation)//代码创建的默认为竖直向的,需要横向的可设置这个,枚举值在下方  
void    setRange(int min, int max)//设置值在变化范围,与setMinimun与setMaxmun两函数效果相同  
void    setValue(int)  

enum Qt::Orientation:

Constant    Value  
Qt::Horizontal  0x1  
Qt::Vertical    0x2  

信号如下:

复制代码
void    actionTriggered(int action)  
void    rangeChanged(int min, int max)  
void    sliderMoved(int value)  
void    sliderPressed()  
void    sliderReleased()  
void    valueChanged(int value)//一般使用这个  
复制代码
——————————————————————————————————————————————————————

QScrollBar大多函数都继承自上述类,

它的公有函数只有构造函数:

QScrollBar(QWidget * parent = 0)  
QScrollBar(Qt::Orientation orientation, QWidget * parent = 0)  
~QScrollBar()  

示例如下:

复制代码
#include "dialog.h"  
#include "ui_dialog.h"  
#include <QGridLayout>  
#include <QScrollBar>  
#include <QDebug>  
Dialog::Dialog(QWidget *parent) :  
    QDialog(parent),  
    ui(new Ui::Dialog)  
{  
    ui->setupUi(this);  
    ScrollBar=new QScrollBar;  
    ScrollBar->setMinimum(5);  
    ScrollBar->setMaximum(20);  
    ScrollBar->setSingleStep(2);  
    ScrollBar->setPageStep(5);  
    ScrollBar->setSliderPosition(10);  
    ScrollBar->setOrientation(Qt::Horizontal);//将它改为水平的  
    //ScrollBar->setInvertedAppearance(true);  
    //ScrollBar->setInvertedControls(true);  
    //ScrollBar->setTracking(false);  
  
    QGridLayout *Layout = new QGridLayout;//布局类,用于将部件显示到建立的ui上  
    Layout->addWidget(ScrollBar, 0, 0);  
    setLayout(Layout);  
  
    connect(ScrollBar,SIGNAL(valueChanged(int)),this,SLOT(SB_value_changed(int)));//连接信号,值一变就输出  
}  
  
Dialog::~Dialog()  
{  
    delete ui;  
}  
  
void Dialog::SB_value_changed(int a)  
{  
    qDebug()<<a;  
}  
复制代码

————————————————————————————————————————————————————————————

 QSlider相比而言,

多出了tick(记号,翻译成刻度比较好),它在中心线的两端加了刻度用于标记值。

公有函数如下:

复制代码
<span style="white-space:pre">  </span>QSlider(QWidget * parent = 0)  
<span style="white-space:pre">  </span>QSlider(Qt::Orientation orientation, QWidget * parent = 0)  
<span style="white-space:pre">  </span>~QSlider()  
void    setTickInterval(int ti)//设置刻度间隔  
void    setTickPosition(TickPosition position)//刻度位置,枚举值,见下方  
int tickInterval() const  
TickPosition    tickPosition() const  
复制代码

刻度位置的枚举值enum QSlider::TickPosition

QSlider::NoTicks 0 无刻度,默认
QSlider::TicksBothSides 3 中线两端绘制
QSlider::TicksAbove 1 绘制线的上方
QSlider::TicksBelow 2 线下方
QSlider::TicksLeft TicksAbove 线左方
QSlider::TicksRight TicksBelow 线右方

设置刻度后图:

代码:

Slider=new QSlider;  
Slider->setOrientation(Qt::Horizontal);  
Slider->setTickPosition(QSlider::TicksAbove);  
Slider->setTickInterval(5);  

其它常用函数及信号都来自抽象类,这里不赘述
————————————————————————————————————————————————————————————

QDial同Qslider类似,也多了个notch(刻痕)的概念

公有函数如下:

复制代码
 QDial(QWidget * parent = 0)  
~QDial()  
int notchSize() const  
qreal   notchTarget() const  
bool    notchesVisible() const  
void    setNotchTarget(double target)//notch target指两刻度之间的像素距离,默认3.7px  
bool    wrapping() const  
复制代码

公有槽:

void    setNotchesVisible(bool visible)//设置刻痕是否可见,默认不可见  
void    setWrapping(bool on)  

wrap有缠绕,盘绕的意思,可理解为首尾相接,设置成true(左)与不设置false效果分别如下:




本文转自夜&枫博客园博客,原文链接:http://www.cnblogs.com/newstart/p/4476110.html,如需转载请自行联系原作者



版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Qt开发笔记之编码x264码流并封装mp4(二):windows平台x264添加mp4支持,gpac库的介绍与编译
Qt开发笔记之编码x264码流并封装mp4(二):windows平台x264添加mp4支持,gpac库的介绍与编译
54 0
Mac VM CentOS7配置静态IP
Mac VM CentOS7配置静态IP
79 0
HaaS UI小程序解决方案基础教学之七:创建第一个自定义组件
前面已经介绍过通过HaaS UI内置的组件库来搭建页面,而组件(Component)是 Vue.js 最强大的功能之一。 组件可以扩展 HTML 元素(在HaaS UI里就是扩展基础组件库),封装可重用的代码。 组件系统让我们可以用独立可复用的小组件来构建大型应用。
161 0
CentOS 7 网页加载速度慢的解决办法
原因 DNS解析缓慢的原因是CentOS 6/REHL 6 总是需要等待AAAA(IPv6)的结果,即使IPv6已在网络设置中禁用 解决办法 在resolv.
1574 0
c#继承(抽象类、接口)
c#继承(抽象类、接口) new 覆盖基类中的同名成员。 override 重写virtual和abstract函数。 abstract 为了定义三角形、矩形类,可以先定义图形类,再在图形类的基础上派生出具体类。图形类不能被实例化,因此可以定义为抽象类。 抽象类——abstract修饰。无法实例化。 抽象方法——abstract修饰。只能在抽象类中出现。只声
1084 0
在Ubuntu为Android硬件抽象层(HAL)模块编写JNI方法提供Java访问硬件服务接口
在上两篇文章中,我们介绍了如何为Android系统的硬件编写驱动程序,包括如何在Linux内核空间实现内核驱动程序和在用户空间实现硬件抽象层接口。实现这两者的目的是为了向更上一层提供硬件访问接口,即为Android的Application Frameworks层提供硬件服务。
818 0
Ext.widgets-grid(1)
Ext.grid.ColumnModel用于定义Grid的列用例var colModel = new Ext.grid.ColumnModel([    {header: "Ticker", width: 60, sortable: true},    {header: "Company Name"...
723 0
Ext.widgets-grid(2)
Ext.grid.EditorGridPanel可编辑数据表格Config {clicksToEdit : Number    //点几次开始编辑,默认为2}方法EditorGridPanel()构造,应为 EditorGridPanel(Object config)startEditing( Nu...
718 0
+关注
3656
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载