QT_StepByStep(2)--滑动杆的实现

1、实现效果图:

2、代码清单:

#include <QtGui/QApplication>
#include <QtGui/QWidget>
#include <QtGui/QSpinBox>
#include <QtGui/QSlider>
#include <QtGui/QHBoxLayout>
int main(int argc, char *argv[])
{
  QApplication app(argc, argv);
  QWidget *window = new QWidget;
  window->setWindowTitle("Enter your age");
  QSpinBox *spinBox = new QSpinBox;
  QSlider *slider = new QSlider(Qt::Horizontal);
  spinBox->setRange(0, 130);
  slider->setRange(0, 130);
  QObject::connect(slider,SIGNAL(valueChanged(int)),spinBox,SLOT(setValue(int)));
  QObject::connect(spinBox,SIGNAL(valueChanged(int)),slider,SLOT(setValue(int)));
  spinBox->setValue(35);
  QHBoxLayout *layout = new QHBoxLayout;
  layout->addWidget(spinBox);
  layout->addWidget(slider);
  window->setLayout(layout);
  window->show();
return app.exec();
}

3、代码解析:

使用组件:

(1)QSpinBox

QSpinBox 是一个有上下箭头的微调器。

(2) QSlider

QSlider 是一个滑动杆。

(3)QWidget

QWidget 一个新的顶级窗口。

首先创建了一个 QWidget 的实例,调用 setWindowTitle 函数来设置窗口标题。然后创建了一个 QSpinBox 和 QSlider,分别设置了它们值的范围,使用的是 setRange 函数。然后进行信号槽的链接。这点后面再详细说明。然后是一个 QHBoxLayout,就是一个水平布局,按照从左到右的顺序进行添加,使用 addWidget 添加好组件后,调用 QWidget 的 setLayout 把 QWidget的 layout 设置为我们定义的这个 Layout。

比如下面的 spinBox - >setValue(35)执行的时候,首先,spinBox 会将自己的值设为 35 ,这样,它的值与原来的不一样了(在没有 setValue 之前
的时候,默认值是 0),于是它发出了 valueChanged 信号。slider 接收到这个信号,于是回调自己的 setValue 函数,将它的值也设置成 35,它也发出了 valueChanged 信号。当然,此时 spinBox 又收到了,不过它发现,if(spinbox==35) stop valuechanged。这个 35 和它本身的值是一样的,于是它就不发出信号,所以信号传递就停止了。

总体来说,这是一个循环结构,这个值的改变是通过int参数传递的,通过QT的信号槽机制完成了一个数据绑定,使两个组件或者更多组件的状态能够同步变化。

Qt 一共有三种主要的 layout,分别是:

QHBoxLayout-   按照水平方向从左到右布局;
QVBoxLayout-  按照竖直方向从上到下布局;
QGridLayout-  在一个网格中进行布局,类似于 HTML 的 table。

layout 使用 addWidget 添加组件,使用 addLayout 可以添加子布局,因此,这就有了无穷无尽的组合方式。

时间: 2024-11-25 14:56:55

QT_StepByStep(2)--滑动杆的实现的相关文章

基于jQuery滑动杆实现购买日期选择

这是一款基于jQuery的滑动杆购买日期选择插件,它的外观仿的是阿里云的服务器购买日期选择界面.这款jQuery插件非常适合在一些虚拟产品购买页面上使用,它可以帮助你的用户快速选择产品的购买日期,十分方便.效果图如下: 在线预览   源码下载 实现的代码. html代码: <center> <div class="slider-date" id="slider-date-1"> <!--底层--> <ul class=&qu

QT_StepByStep(2)--初体验hello world!(1)

例程一:hello world! 支持HTML语言解析. #include <QtGui/QApplication> #include<QLabel> int main(int argc, char *argv[]) { QApplication app(argc,argv); QLabel *label=new QLabel("<h2><fontcolor='red'>hello</font>,world<h2> &quo

QT_StepByStep(3)--创建一个对话框

FINDDIALOG_H 头文件: #ifndef FINDDIALOG_H #define FINDDIALOG_H #include <QtGui/QDialog> /*声明四个用到的类*/ class QCheckBox; class QLabel; class QLineEdit; class QPushButton; /*首先定义一个派生类QDialog,基类是FindDialog*/ class FindDialog : public QDialog { /*Q_OBJECT 是宏

jQuery双向滑动杆 设置数值百分比

在线演示 本地下载 原文地址:https://www.cnblogs.com/qixidi/p/10051291.html

jQuery滑动杆打分插件

在线演示 本地下载 原文地址:https://www.cnblogs.com/qixidi/p/10058127.html

使用opengl制作简单的控制杆

这一次数字媒体的作业是在模拟水波的基础上(波浪相关实现参考:http://www.cnblogs.com/linchw3/p/4840995.html)使用控制杆进行相关控制,原本以为opengl应该会有相关的函数可以直接实现控制杆,可是找了好久没有找到(应该是没有这种函数,不太肯定),所以只好自己手打控制杆,后来发现其实,很简单,其实控制杆就是一个矩形(代表杆),一个随着鼠标移动的矩形(代表滑块),还有一个鼠标监控,以实现波浪高度的调节杆为例子: 首先是绘制一个控制杆(矩形): 1 glBeg

Unity 编辑器下控制播放粒子

在Unity编辑器的Scene视图进行控制播放粒子ParticleSystem,可以借助方法Simulate,具体可以参照以下例子: 创建一个空对象ParticleAll,在这个对象下添加一个粒子(要添加多个粒子的话,添加到这个粒子之下),此时选中粒子,可以看到Scene视图预览播放粒子效果.附上新脚本EditParticleSystem,此为空脚本,如下: C# Code 1 2 3 4 5 6 using UnityEngine; public class EditParticleSyste

Unity 编辑器下控制播放Animator

在Unity编辑器的Scene视图进行控制播放Animator,可以借助方法StartPlayback.StopPlayback.StartRecording和StopRecording,具体可以参照以下例子: 创建一个带Controller的Animator对象,可以看到此时人物呈现T型姿势.附上新脚本EditAnimator,此为空脚本,如下: C# Code 1 2 3 4 5 6 using UnityEngine; public class EditAnimator : MonoBeh

Qt可显示基本的图像类型,利用QImage、QPxmap类可以实现图像的显示

Qt可显示基本的图像类型,利用QImage.QPxmap类可以实现图像的显示,并且利用类中的方法可以实现图像的基本操作(缩放.旋转). 1. Qt可显示的图像类型 参考Qt的帮助文档,可支持的类型,即可以直接读取并显示的格式有BMP.GIF.JPG.JPEG.PNG.TIFF.PBM.PGM.PPM.XBM.XPM. 2. Qt用如何显示图像 通常用QLabel显示图像,QLabel类有setPixmap()函数,可以用来显示图像.也可以直接用QPainter画出图像. 如果图像过大,直接用QL