2011-08-03 124 views
1

我是新来的Qt框架,所以请多多包涵......滚动条滚动控制滚动区域Qt中

我一直在考虑这个简单的任务,我有一系列Qlabels中的每一个设置为为.png PIC

这些多Qlabels不适合屏幕,所以在这里滚动条将方便...

,所以我插入了我所有的项目在我的滚动区域

采取看情况: enter image description here

我想滚动条CONTROLL滚动区域时的滑动移动

向上滚动和向下

我已经创建了槽slideMoved(),其吸收由所述滚动条所产生的信号这是Form.cpp类:

//Form.cpp 
#include "form1.h" 
#include "form.h" 
#include "ui_form.h" 
#include "ui_form1.h" 
#include<QScrollArea> 
#include<QScrollBar> 

Form::Form(QWidget *parent) : 
    QWidget(parent), 
    ui(new Ui::Form) 
{ 
    ui->setupUi(this); 


} 

Form::~Form() 
{ 
    delete ui; 
} 

void Form::slideMoved() 
{ 

} 

我的问题有以下几种,

-am我这样做的权利,或者他们是其他SIMPL呃那样做?

- 如何应slideMoved()处理滚动上下滚动区域的事件

请具体说明,因为我是新来这个,我会理解

谢谢

回答

0

如果你想创建一个插槽,你必须指定它是一个插槽。

这是这样

private slots: 
    void slideMoved(); 

做然后你要实现你的方式该插槽。

void Form::slideMoved(int val) 
{ 
    ... 
} 

最后,您必须将信号连接到您的插槽,以便在信号被触发时触发您的插槽。

connect(sender,SIGNAL(sliderMoved(int)),receiver,SLOT(slideMoved(int))); 

然后,您可以创建一个新变量来保存上一个滑块值。 每次您的插槽将被执行时,您都会将之前的值与新的值进行比较以了解运动。

private: 
    int previousValue; 

槽可以是这样的东西。

void Form::slideMoved(int val) 
    { 
     if(val<previousValue) qDebug() << "Previous value is smaller"; 
     else qDebug() << "Previous values is bigger"; 
     previousValue = val; 
    } 

你可以阅读更多关于信号和槽here

+0

谢谢messekech,但这是没有帮助的,U只在如何控制解释这已经是众所周知的信号和插槽机制,U无特异性滚动区域容器,并且你没有回答我的问题 – karim

+0

编辑我的文章,以更清晰地回答你的问题。 – kechapito

+0

感谢它的工作,使其工作... – karim