我有一个带有QScrollArea的Widget,我想让它在显示包含它的小部件后立即向下滚动。我试过了:
scrollArea->ensureVisible(0,100, 20, 20);
它仅在用户调用时工作(例如按下按钮)。将它放在widget contstructor或showEvent中不起作用。可以自动完成吗?
我相信您可以通过将位置设置为水平和垂直滚动条来滚动QScrollArea内容。 Smth,像这样:
scrollArea->verticalScrollBar()->setValue(scrollArea->verticalScrollBar()->value() + 10);
scrollArea->horizontalScrollBar()->setValue(scrollArea->horizontalScrollBar()->value() + 10);
上面的代码应该在每次调用时将滚动区域的内容向下滚动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);
}
我花了一些时间使用调试器并发现scriollArea在构造函数中有0个大小,所以看起来只有在创建所有小部件并且可见时才可以滚动内容。滚动showEvent窗口工作正常。