Поля Qt QScrollArea не влияют на размер полосы прокрутки - PullRequest
0 голосов
/ 04 декабря 2018

Когда я помещаю какой-то виджет в поле области QScrollBar, я ожидаю, что полосы прокрутки внутри него не появятся на этих полях, но это так.Вот код MWE:

class MyWidget : public QScrollArea
{
    Q_OBJECT
public:
    explicit MyWidget(QWidget *parent)
        : QScrollArea(parent)
    {
        _bottomWidget = new QWidget{this};
        _bottomWidget->setStyleSheet("background-color: red");

        auto contentWidget = new QWidget{this};
        contentWidget->setFixedSize(200, 1500);
        contentWidget->setStyleSheet("background-color: blue");
        setWidget(contentWidget);
    }

protected:
    void resizeEvent(QResizeEvent* e) override
    {
        QScrollArea::resizeEvent(e);
        QRect cr = contentsRect();
        setViewportMargins(0, 0, 0, 100);
        _bottomWidget->setGeometry(QRect(cr.left(), cr.bottom() - 100, cr.width(), 100));
    }
private:
    QWidget* _bottomWidget;
};

Результат следующий: enter image description here

Я добавил некоторые цвета в виджеты, чтобы увидеть результат: синий виджет оченьвысокий виджет просто для того, чтобы сделать QScrollBar видимым слева, а красный виджет - это виджет, помещенный в поле QScrollArea.Другими словами, я хочу, чтобы QScrollBar заканчивался там, где начинается красный виджет.Возможно ли это?

...