У меня есть виджет с QScrollArea, и я хочу, чтобы он прокручивался вниз сразу после отображения виджета, содержащего его. Я пробовал:
scrollArea->ensureVisible(0,100, 20, 20);
Работает только при вызове пользователем (например, при нажатии кнопки). Помещение его в конструктор виджетов или showEvent не работает. Можно ли это сделать автоматически?
Я полагаю, что вы можете прокручивать содержимое QScrollArea, устанавливая позиции для его горизонтальных и вертикальных полос прокрутки. Что-то вроде этого:
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);
}