1

好吧,我是 Qt 的新手,我有一个问题。

我的 UI 中有一个 QListWidget,其中包含 7 个项目,仅显示 4 个项目,其他项目在使用滚动条后显示。我想在 QListWidet 上方和下方显示一个箭头图像,而不是显示更多要滚动的项目。

好的,我可以查看一个项目是否被隐藏,但它是否被 setHidden() 函数隐藏。什么时候被滚动隐藏?我可以在运行时看到这个吗?因为该项目在那里,但滚动隐藏它,对吧?

我在这里搜索了一些关于此的帖子,但我没有找到。对不起我的英语,可能会感到困惑,但如果有人可以帮助我......

非常感谢!

4

1 回答 1

0

所以这是关于如何做到这一点的基本示例。首先是 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);
}

现在您可以将来自 ScrollBar 的 showTip(bool) 信号连接到绘制图像的插槽。

于 2012-01-24T18:58:12.310 回答