滚动条控制在Qt中滚动滚动区域

时间:2011-08-03 15:01:23

标签: c++ qt scroll

我是QT框架的新手,所以请耐心等待......

我得到了这个简单的任务,我有一系列的Qlabels,每个都设置为.png pic

这些多个Q标签不适合屏幕,因此这里的滚动条会很方便......

所以我在Scroll区域中插入了所有项目

看一下情况: 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()
{

}

我的问题如下,

-am我这样做,或者他们是另一种更简单的方法吗?

-how should slideMoved()通过向上和向下滚动滚动区域来处理事件

请具体,因为我是新手,我很感激

谢谢

1 个答案:

答案 0 :(得分: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

的更多信息