好吧,我是Qt的新手,我有一个问题。
我的UI中有一个包含7个项目的QListWidget,只显示了4个项目,另一个在使用滚动条后显示。我想在QListWidet上方和下方显示一个箭头图像,而不是显示比滚动更多的项目。
好的,我可以查看项目是否被隐藏,但是它是否被setHidden()函数隐藏。它何时被滚动隐藏?我能在运行时看到这个吗?因为该项目在那里,但滚动隐藏它,对吗?
我在这里搜索了一些关于此的帖子,但我没有找到。对不起我的英语,也许会感到困惑,但如果有人可以帮助我......
非常感谢!
答案 0 :(得分: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)信号连接到绘制图像的插槽。