Программная прокрутка QScrollArea

У меня есть виджет с QScrollArea, и я хочу, чтобы он прокручивался вниз сразу после отображения виджета, содержащего его. Я пробовал:

scrollArea->ensureVisible(0,100, 20, 20);

Работает только при вызове пользователем (например, при нажатии кнопки). Помещение его в конструктор виджетов или showEvent не работает. Можно ли это сделать автоматически?

14
задан Cœur 2 August 2017 в 13:33
поделиться

1 ответ

Я полагаю, что вы можете прокручивать содержимое 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);
}
21
ответ дан 1 December 2019 в 12:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: