开发者

Scroll Bar Controlling scrolling a Scroll Area in Qt

I am new to QT framework , so please bear with me...

I have been given this simple task , i have a series of Qlabels each one is set to a .png pic

these Multiple Qlabels don't fit the screen , so a scroll bar here would be handy ...

so i inserted all of my items in my Scroll area

take a look at the situation :

Scroll Bar Controlling scrolling a Scroll Area in Qt

i want the scroll bar to controll the Scroll area to scroll up and down

I Have created the slot slideMoved() that absorbs the signal generated by the scroll bar when the the slide is moved

this is the Form.cpp class :

//Form.cpp
#include "form1.h"
#include "form.h"
#inclu开发者_运维问答de "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()
{

}

My Questions are the following,

-am i doing this right , or their is an other simpler way to do that ?

-how should slideMoved() handle the event by scrolling up and down the scroll area

Please be Specific since i am new to this, I would appreciate that

thank you


If you want to create a slot you must specify that it is a slot.

This is done like this

private slots:
    void slideMoved();

Then you have to implement this slot in the way you did.

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

In the end you have to connect a signal to your slot in order to trigger your slot when the signal is being emmited.

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

Then you can create a new variable to hold the previous slider value. Every time your slot will be executed you will compare the previous value with the new one in order to understand the movement.

private:
    int previousValue;

The slot can be something like this.

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

You can read more about signals and slots here

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜