Когда я помещаю какой-то виджет в поле области 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;
};
Результат следующий:
Я добавил некоторые цвета в виджеты, чтобы увидеть результат: синий виджет оченьвысокий виджет просто для того, чтобы сделать QScrollBar
видимым слева, а красный виджет - это виджет, помещенный в поле QScrollArea
.Другими словами, я хочу, чтобы QScrollBar
заканчивался там, где начинается красный виджет.Возможно ли это?