滚动条控制 Qt 中滚动区域的滚动
Posted
技术标签:
【中文标题】滚动条控制 Qt 中滚动区域的滚动【英文标题】:Scroll Bar Controlling scrolling a Scroll Area in Qt 【发布时间】:2011-08-03 15:01:23 【问题描述】:我是 QT 框架的新手,所以请多多包涵……
我接到了这个简单的任务,我有一系列 Qlabel,每个都设置为 .png pic
这些 Multiple Qlabels 不适合屏幕,所以这里的滚动条会很方便...
所以我将我所有的项目都插入到我的滚动区域中
看看情况:
我想让滚动条控制滚动区域上下滚动
我已经创建了插槽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】:如果你想创建一个槽,你必须指定它是一个槽。
这样做是这样的
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
【讨论】:
谢谢你mesekech,但这没有帮助,你只解释了已知的信号和槽机制,你没有具体说明如何控制滚动区域容器,你没有回答我的问题以上是关于滚动条控制 Qt 中滚动区域的滚动的主要内容,如果未能解决你的问题,请参考以下文章