在QListView中选择项的信号是什么?

2 投票
1 回答
7094 浏览
提问于 2025-04-18 02:01

我最开始使用

QObject.connect(self.image_list, QtCore.SIGNAL('clicked(QModelIndex)'), self.on_row_changed)

这个,但是我发现当我按下右键时,on_row_changed 这个函数会被调用,即使这个项目是灰色的(不在焦点上)。我应该连接哪个信号呢?

我查阅了qt4.8的文档,发现信号 activated (const QModelIndex &index )void indexesMoved (const QModelIndexList &indexes) 都不管用。

所以,当我想根据当前焦点的项目来执行某些操作时,我应该使用哪个信号,这样当我用鼠标或上下箭头移动单选项目时,能够正确调用回调函数呢?

1 个回答

7

对于一个 QListView,你应该连接到它的 信号,这些信号来自于它的 选择模型。如果你想获取当前选中项的变化以及选择的变化,可以这样做:

    self.image_list.selectionModel().currentChanged.connect(self.on_row_changed)
    ...

    def on_row_changed(self, current, previous):
        print('Row %d selected' % current.row())

撰写回答