如何默认选择列表视图中的第一项?

问题描述 投票:0回答:4

我将

QFileSystemModel
QListView
一起使用,并且我希望默认选择模型显示的第一个项目。

每次单击某个项目时如何执行此操作?

qt qlistview qfilesystemmodel
4个回答
13
投票

使用

setCurrentIndex
应该可以完成这项工作:

view->setCurrentIndex(fsModel->index(0, 0));

fsModel
这里可以是类似
view->model()
.


0
投票

这将选择并单击第一项:

ui->ListWidget->setCurrentRow(0);
QListWidgetItem* item = ui->ListWidget->item(0);
ui->ListWidget->itemClicked(item);

0
投票

我遇到了同样的问题(Pyside6 python),这是我的解决方法(如果更改语法,应该在 C++ 中工作)。虽然不是那么好,但是可以用!

class someClass:
    def __init__(self):
        self.fileSystemModel = QFileSystemModel()
        self.fileSystemModel.setRootPath(path)
        self.view = QListView()
        self.view.setModel(self.fileSystemModel)
        self.view.setRootIndex(self.fileSystemModel.index(self.fileSystemModel.rootPath()))
        self.fileSystemModel.layoutChanged.connect(self.updateSelectedItem)

    def updateSelectedItem(self):
        self.view.setCurrentIndex(self.view.moveCursor( QAbstractItemView.CursorAction.MoveHome,Qt.NoModifier))

您正在寻找的线路可能是这两行:

self.fileSystemModel.layoutChanged.connect(self.updateSelectedItem)

如果您只在开始时需要它,directoryLoaded Signal 也可能有效。

self.view.setCurrentIndex(self.view.moveCursor( QAbstractItemView.CursorAction.MoveHome,Qt.NoModifier))

moveCursor 提供了一个 QModelIndex(在本例中为左上角 -> MoveHome)。 如果您使用其他 QAbstractItemView.CursorAction,例如 QAbstractItemView.CursorAction.MoveDown,您可以选择下一项。
更多这里:


-1
投票

您是否尝试过连接 QListView 信号:

void clicked ( const QModelIndex & index )

到插槽并从

读取数据
QModelIndex::data

它会提供索引,检查是否是第一个,如果是,则设置它。

© www.soinside.com 2019 - 2024. All rights reserved.