以编程方式滚动 QScrollArea
Posted
技术标签:
【中文标题】以编程方式滚动 QScrollArea【英文标题】:Programmatically scroll QScrollArea 【发布时间】:2010-08-27 23:25:20 【问题描述】:我有一个带有 QScrollArea 的小部件,我希望它在包含它的小部件显示后立即向下滚动。我试过了:
scrollArea->ensureVisible(0,100, 20, 20);
它仅在用户调用时才起作用(例如按下按钮)。将它放在小部件构造函数或 showEvent 中不起作用。可以自动完成吗?
【问题讨论】:
【参考方案1】:我相信您可以通过将位置设置为水平和垂直滚动条来滚动 QScrollArea 内容。嗯,像这样:
scrollArea->verticalScrollBar()->setValue(scrollArea->verticalScrollBar()->value() + 10);
scrollArea->horizontalScrollBar()->setValue(scrollArea->horizontalScrollBar()->value() + 10);
上面的代码每次被调用时应该将滚动区域的内容向下滚动 10 像素,向右滚动 10 像素
希望这有帮助,问候
Edit0:额外的代码 sn-p 显示如何在表单的构造函数中滚动区域:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
ui->setupUi(this);
QLabel *imageLabel = new QLabel;
QImage image("my_large_image_file.JPG");
imageLabel->setPixmap(QPixmap::fromImage(image));
ui->scrollArea->setBackgroundRole(QPalette::Dark);
ui->scrollArea->setWidget(imageLabel);
ui->scrollArea->horizontalScrollBar()->setValue(100);
ui->scrollArea->verticalScrollBar()->setValue(100);
【讨论】:
不幸的是,当从小部件构造函数或 showEvent 调用时,它也不起作用。 我想你应该发布一些你的代码,因为这个解决方案在我的表单的小部件构造函数中对我有用 好的,我发现了这个错误。在设置滚动条之前有 resize(maximumSize()),这显然不是一个好主意(但我不确定为什么会以这种方式影响 scrollAreas 行为)。【参考方案2】:我花了一些时间在调试器上,发现 scriollArea 在构造函数中的大小为 0,因此看起来只有当所有小部件都已创建并可见时才能滚动某些内容。在窗口的 showEvent 中滚动效果很好。
【讨论】:
以上是关于以编程方式滚动 QScrollArea的主要内容,如果未能解决你的问题,请参考以下文章