以编程方式滚动QScrollArea

maj*_*aen 14 qt qt4

我有一个带有QScrollArea的Widget,我想让它在显示包含它的小部件后立即向下滚动.我试过了:

scrollArea->ensureVisible(0,100, 20, 20);
Run Code Online (Sandbox Code Playgroud)

它仅在用户调用时工作(例如按下按钮).将它放在widget contstructor或showEvent中不起作用.可以自动完成吗?

ser*_*nko 21

我相信您可以通过将位置设置为水平和垂直滚动条来滚动QScrollArea内容.Smth,像这样:

scrollArea->verticalScrollBar()->setValue(scrollArea->verticalScrollBar()->value() + 10);
scrollArea->horizontalScrollBar()->setValue(scrollArea->horizontalScrollBar()->value() + 10);  
Run Code Online (Sandbox Code Playgroud)

上面的代码应该在每次调用时将滚动区域的内容向下滚动10个像素,向右滚动10个像素

希望这有帮助,问候

Edit0:额外的代码片段,显示如何在窗体的构造函数中滚动区域:

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);
}
Run Code Online (Sandbox Code Playgroud)