Я считаю, что вы можете прокручивать содержимое 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);
}
К сожалению, при вызове из конструктора виджета или showEvent он также не работает. – majaen
Я думаю, вы должны опубликовать часть своего кода, так как это решение работает для меня в конструкторе виджета моей формы. –
Хорошо, я нашел ошибку. Перед установкой полос прокрутки был изменен размер (maximumSize()), что, очевидно, не очень хорошая идея (однако я не уверен, почему это повлияло на поведение scrollAreas таким образом). – majaen