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