我正在尝试实现一个新的自定义滚动条。为此,我已使用this->setParent(area);
class QMacScrollBar : public QScrollBar
{
Q_OBJECT
public:
QMacScrollBar(QAbstractScrollArea *area, Qt::Orientation orientation, QWidget *parent = 0);
virtual void paintEvent ( QPaintEvent * );
QAbstractScrollArea *area;
signals:
public slots:
virtual void resizeEvent(QResizeEvent *event);
};
QMacScrollBar::QMacScrollBar(QAbstractScrollArea *area, Qt::Orientation orientation, QWidget *parent) :
QScrollBar(area)
{
this->setMouseTracking(true);
this->setOrientation(orientation);
this->setParent(area);
this->area = area;
}
void QMacScrollBar::resizeEvent(QResizeEvent *event){
QRect geometry = QRect(QPoint(0, 0), event->size());
if (area != NULL){
geometry.setHeight(area->height());
geometry.moveRight(area->width());
geometry.adjust(-5, 0, -5, 0);
this->setGeometry(geometry);
}
QScrollBar::resizeEvent(event);
}
我确实获得了前几个调整大小,但之后没有。到目前为止,我的猜测是,当我调整窗口大小时,QScrollArea实际上没有调整大小,它只是隐藏了更多的视口。我需要调整大小事件,因为我需要移动显示栏的位置。我该如何解决这个问题?
编辑:我得到的唯一调整是我通过连接到底层滚动条的setRange
信号而生成的。