【发布时间】:2013-07-18 16:41:48
【问题描述】:
我想为 Qt(不是 QML)创建一个小部件,它源自例如 QListWidget,并在向上/向下滚动时动态加载内容,就像大多数 Android/iOS 应用程序一样。
有人知道哪种方法最好吗?
干杯,
【问题讨论】:
标签: c++ qt user-interface scroll qwidget
我想为 Qt(不是 QML)创建一个小部件,它源自例如 QListWidget,并在向上/向下滚动时动态加载内容,就像大多数 Android/iOS 应用程序一样。
有人知道哪种方法最好吗?
干杯,
【问题讨论】:
标签: c++ qt user-interface scroll qwidget
动态加载内容并不意味着它是无限的。为此,只需实现模型的 fetchMore() 和 canFetchMore() 方法。
【讨论】:
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!!!";
}
当然,如果您想添加更多填充,可以从最小值/最大值中减去一些。
【讨论】: