2011-08-03 163 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