在 QListView 中显示最后一个元素

Posted

技术标签:

【中文标题】在 QListView 中显示最后一个元素【英文标题】:Show Last element in QListView 【发布时间】:2018-09-13 11:24:54 【问题描述】:

这听起来微不足道,但我找不到在 QListView 中显示最后添加的元素的函数。

它适用于模型

// Create model
model = new QStringListModel(this);

// Make data
QStringList List;
// Populate our model
model->setStringList(List);
// Glue model and view together
listView->setModel(model);

元素是用

添加的
void WidgetMessageList::addString(const QString & message)

    if(model->insertRow(model->rowCount())) 
        QModelIndex index = model->index(model->rowCount() - 1, 0);
        model->setData(index, message);        
    

在这个函数中,显示的元素也应该是最后一个。

【问题讨论】:

QAbstractItemView::scrollTo? 有效! listView->scrollTo(index); 那我们就把它当做答案吧) 【参考方案1】:

QAbstractItemView::scrollTo

如有必要,滚动视图以确保索引处的项目是 可见的。视图将尝试根据给定的位置定位项目 提示。

http://doc.qt.io/archives/qt-4.8/qabstractitemview.html#scrollTo

【讨论】:

【参考方案2】:
    创建一个类属性来保存最后一个索引 将QAbstractItemModel::rowsInserted 连接到应用程序中的插槽 在槽中相应地更新索引

【讨论】:

我也会准备一个例子。敬请期待。

以上是关于在 QListView 中显示最后一个元素的主要内容,如果未能解决你的问题,请参考以下文章

Qt入门系列开发教程高级控件篇QListWidget列表小部件

信号和插槽的连接(关于 qlistview) - Qt

如何让QListView显示多列 QTableView与QListView区别在哪里

QListView 仅在视图中显示单个项目

Qt:更改 QListView 中的图标

如何自定义 QListView 的显示