Qt列表窗口小部件滚动时动态加载内容

4
我希望为Qt(不是QML)创建一个小部件,它派生自例如QListWidget的控件,并在向上/向下滚动时动态加载内容,就像大多数Android/iOS应用程序一样。
有人知道哪种方法最好吗?
干杯!
2个回答

3

动态加载内容并不意味着它是无限的。为此,只需实现模型的fetchMore()和canFetchMore()方法。


嗨Peppe,谢谢你的回答,我下周会测试一下并再次联系你。祝你周末愉快。 - Didac Perez Parera
1
它只适用于列表末尾而非开头(只能向下滚动而不能向上滚动)。你对向上滚动有什么想法? - S.M.Mousavi

0

fetchMore 和 canFetchMore 真的很棒,但有点掩盖了事物的工作原理。

更直接的方法是在您的子类化 QListWidget 中使用此函数。

void MyQListWidgetClass::scrollContentsBy(int dx, int dy)
{
    QListWidget::scrollContentsBy(dx, dy);

    bool scrolled_top = false;
    if(this->verticalScrollBar()->value() == this->verticalScrollBar()->minimum())
        scrolled_top = true;

    bool scrolled_bottom = false;
    if(this->verticalScrollBar()->value() == this->verticalScrollBar()->maximum())
        scrolled_bottom = true;


    if(scrolled_top)
        qDebug() << "FIRE FIRE FIRE FIRE!!!";

    if(scrolled_bottom)
        qDebug() << "WATER WATER WATER WATER!!!";
}

当然,如果你想要添加更多的填充,你可以从最小/最大值中减去一些。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接