【问题标题】:Get and set the active row in QTreeview programmatically (PyQt)以编程方式获取和设置 QTreeview 中的活动行 (PyQt)
【发布时间】:2011-11-19 16:41:23
【问题描述】:

有没有办法获取和更改 QTreeView(不是 QTreeWidget)中的活动行?激活是指具有焦点突出显示的行,而不是选定的行。在绘画活动中,我可以使用QStyle.State_HasFocus 来获取活动行,但这似乎在其他地方不起作用。

【问题讨论】:

    标签: python qt pyqt qtreeview qabstractitemmodel


    【解决方案1】:

    您可以使用currentIndex()setCurrentIndex() 函数获取/设置活动行,这些函数可以在QTreeViewQItemSelectionModel 中找到(后者由QTreeView.selectionModel() 返回)。

    尽管有它的名字,QItemSelectionModel 却独立处理视图当前项和视图选择。

    【讨论】:

      【解决方案2】:

      当前项目是由焦点矩形指示的项目。您可以使用树视图的selectionModel 功能对其进行更改。如果您不想更改当前选定的项目,请将 QtGui.QItemSelectionModel.NoUpdate 作为第二个参数传递给 setCurrentIndex 方法。下面是一个例子:

      index = model.index(3, 0);
      view.selectionModel().setCurrentIndex(index, QtGui.QItemSelectionModel.NoUpdate)
      

      这应该将当前项目移动到索引为 3 的项目

      希望这有帮助,问候

      【讨论】:

        【解决方案3】:

        对我来说,问这样的问题并没有什么新鲜事,为什么,因为简单;您可以使用 Qt-Designer 并创建 QTreeView 然后创建行编辑,然后使用动作编辑器链接它们,然后将 UI 文件转换为 Py 文件,然后您将看到幕后的工作原理。
        如果您尝试,您会发现:

        QtCore.QObject.connect(self.treeView, QtCore.SIGNAL(_fromUtf8("clicked(QModelIndex)")), self.test)
        

        【讨论】:

          猜你喜欢
          • 2017-03-29
          • 1970-01-01
          • 1970-01-01
          • 2015-11-20
          • 1970-01-01
          • 2011-08-23
          • 1970-01-01
          • 2011-03-20
          • 2020-01-30
          相关资源
          最近更新 更多