所以这里是如何做到这一点的基本示例。首先这里是MainWindow类上市 实现:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QListWidget *listW = new QListWidget;
//Add some items
for(int i = 0; i < 20; i++) {
QListWidgetItem *item = new QListWidgetItem("Item" + QString::number(i));
listW->addItem(item);
}
listW->setVerticalScrollMode(QAbstractItemView::ScrollPerItem);
listW->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
//Set reimplemented scroll bar
listW->setVerticalScrollBar(new ScrollBar);
setCentralWidget(listW);
}
你可以从我已在滚动条策略设置的Qt ::代码见ScrollBarAsNeeded。通过这样做,我们可以利用这个事实,即我们现在可以对滚动条中的显示/隐藏事件做出反应。这里是QScrollBar的重新实现:
ScrollBar::ScrollBar(QWidget *parent) :
QScrollBar(parent)
{
}
void ScrollBar::hideEvent(QHideEvent *e)
{
emit showTip(false);
}
void ScrollBar::showEvent(QShowEvent *e)
{
emit showTip(true);
}
现在你可以在showTip(布尔)信号从滚动条连接到绘制图像的插槽。