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

发布于 2024-10-29 04:46:45 字数 113 浏览 5 评论 0原文

我正在使用 QFileSystemModelQListView,并且我希望默认选择模型显示的第一个项目。

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

I am using QFileSystemModel along with QListView, and I want the first item shown by the model to get selected by default.

How I do that every time I click an item ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

生死何惧 2024-11-05 04:46:45

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

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

这里的fsModel可以是类似view->model()的东西。

Using setCurrentIndex should do the job:

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

fsModel here can be something like view->model().

把回忆走一遍 2024-11-05 04:46:45

我遇到了同样的问题(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 信号也可能起作用。

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

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

I had the same problem (Pyside6 python) here is my workaround (should work in c++ if you change syntax). It isn't that nice, but works!

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))

The lines you are looking for are probably this two:

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

The directoryLoaded Signal might work as well, if you only need it on the start.

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

moveCursor provides a QModelIndex (in this case the left-upper-corner -> MoveHome).
If you use other QAbstractItemView.CursorAction like QAbstractItemView.CursorAction.MoveDown, you can select the next item.
More here:

彡翼 2024-11-05 04:46:45

这将选择并单击第一个项目:

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

This is going to select and click the first item:

ui->ListWidget->setCurrentRow(0);
QListWidgetItem* item = ui->ListWidget->item(0);
ui->ListWidget->itemClicked(item);
み青杉依旧 2024-11-05 04:46:45

您是否尝试过将 QListView signal: 连接

void clicked ( const QModelIndex & index )

到插槽并从中读取数据

QModelIndex::data

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

Have you tried connecting the QListView singal:

void clicked ( const QModelIndex & index )

to a slot and reading the data from the

QModelIndex::data

It will provide the index, check if its the first one, if it is, set it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文