Полоса прокрутки Управление прокруткой области прокрутки в Qt - PullRequest
1 голос
/ 03 августа 2011

Я новичок в QT Framework, поэтому, пожалуйста, потерпите меня ...

Мне было дано это простое задание, у меня есть серия Qlabels, каждый из которых настроен на .png pic

эти несколько Qlabels не умещаются на экране, поэтому здесь была бы удобна полоса прокрутки ...

, поэтому я вставил все свои предметы в область прокрутки

.в ситуации: enter image description here

я хочу, чтобы полоса прокрутки управляла областью прокрутки для прокрутки вверх и вниз

Я создал слот 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()
{

}

Мои вопросы следующие,

- я делаю это правильно, илиЭто еще один более простой способ сделать это?

- как slideMoved () должен обрабатывать событие, прокручивая вверх и вниз область прокрутки

Пожалуйста, будьте конкретны, так как я новичок вэто, я был бы признателен, что

спасибо

1 Ответ

0 голосов
/ 03 августа 2011

Если вы хотите создать слот, вы должны указать, что это слот.

Это сделано так

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;
    }

Вы можете узнать больше о сигналах и слотах здесь

...