gpt4 book ai didi

c++ - 滚动条在Qt中控制滚动滚动区域

转载 作者:太空宇宙 更新时间:2023-11-04 14:21:54 24 4
gpt4 key购买 nike

我是QT框架的新手,所以请多多包涵...

我被赋予了这个简单的任务,我有一系列 Qlabels,每个都设置为 .png 图片

这些多个 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()应该如何处理滚动区域上下滚动的事件

请具体说明,因为我是新手,我将不胜感激

谢谢

最佳答案

如果你想创建一个插槽,你必须指定它是一个插槽。

这样做是这样的

private slots:
void slideMoved();

然后你必须按照你做的方式实现这个插槽。

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

最后,您必须将信号连接到插槽,以便在发出信号时触发插槽。

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

然后您可以创建一个新变量来保存之前的 slider 值。每次执行您的插槽时,您都会将先前的值与新值进行比较,以了解运动情况。

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

关于c++ - 滚动条在Qt中控制滚动滚动区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6928599/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com