我有兴趣计算一个节点的物理位置,QTreeView但是找不到这样做的方法(除了自己计算它,考虑到鲁棒性,这很麻烦且容易出错QTreeView).
有没有一种标准方法可以找到与a相关的数据的绘制位置QModelIndex(类似于将indexAt()位置映射到a的方式QModelIndex)?
我正在使用Python 2.7和Qt设计器,而且我是MVC的新手:我在Qt中完成了一个View,为我提供了一个目录树列表,以及用于运行的控制器.我的问题是:
给定Qtree视图,如果选择目录,如何获取目录?

代码快照在下面,我怀疑它是SIGNAL(..)虽然我不确定:
class Main(QtGui.QMainWindow):
plot = pyqtSignal()
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
# create model
model = QtGui.QFileSystemModel()
model.setRootPath( QtCore.QDir.currentPath() )
# set the model
self.ui.treeView.setModel(model)
**QtCore.QObject.connect(self.ui.treeView, QtCore.SIGNAL('clicked()'), self.test)**
def test(self):
print "hello!"
Run Code Online (Sandbox Code Playgroud) 我正在使用QTreeView和QDirModel这样:
QDirModel * model = new QDirModel;
ui->treeView->setModel(model);
ui->treeView->setSelectionMode(QTreeView::ExtendedSelection);
ui->treeView->setSelectionBehavior(QTreeView::SelectRows);
Run Code Online (Sandbox Code Playgroud)
这工作正常,但是,我不知道如何获取有关我选择的文件的详细信息.到目前为止我有这个:
QModelIndexList list = ui->treeView->selectionModel()->selectedIndexes();
Run Code Online (Sandbox Code Playgroud)
但不知道现在要做什么,我想得到每个文件的名称和完整路径.一个例子真的很棒.谢谢.
我正在使用QTreeView和QFileSystemModel.它显示大小,类型,修改日期等列,我不需要.如何从视图中删除它们?我removeColumn在模型或视野中找不到任何东西.
我希望我的QTreeView所有项目都能得到扩展.在这种情况下,所有展开按钮/装饰都是不必要的,我想摆脱它们.如何删除所有这些?setRootIsDecorated只会删除第一级的按钮...
我需要在QtreeView中显示自己的数据模型的工作示例(c ++).
我正在尝试创建一个QTreeView并使用自定义模型.我把qDebug()报表在不同的地方,我已经确定,data()是永远不会被调用.我该如何解决这个问题?
该模型的代码如下
#include "ModelItemNeural.h"
ModelItemNeural::ModelItemNeural(QObject *parent, NeuralNode *rootNode)
: QAbstractItemModel(parent)
{
this->rootNode = 0;
}
QModelIndex ModelItemNeural::index(int row, int column, const QModelIndex &parent) const
{
// Out of bounds and null rootNode check.
if (rootNode == 0 || row < 0 || column < 0)
{
return QModelIndex();
}
NeuralNode* parentNode = nodeFromIndex(parent);
NeuralNode* childNode = parentNode->getInputs().value(row);
if (childNode == 0)
{
return QModelIndex();
}
return createIndex(row, column, childNode);
}
QModelIndex ModelItemNeural::parent(const QModelIndex &child) …Run Code Online (Sandbox Code Playgroud) 我刚刚从wxPython切换到PyQT,我在QTreeview上遇到了一些麻烦.我有一个QTreeview,它将显示分类为可扩展的部分的数据,但是这个TreeView中的数据不应该是可编辑的,但我需要能够让用户选择数据(双击将执行另一个方法).我不确定如何使它只读,但也可以选择.我使用QStandardItemModel和QStandardItem来保存数据.
任何帮助将非常感激.
我有一个自定义QAbstractItemModel和自定义树视图。
是否可以合并QTreeView中的某些单元格?
它看起来像这样:
Num | Name | Qty | .... |
----|-----------|-----|------|
1 | Unit one | 5 | .... |
1.1 | Sub unit1 | 3 | .... |
1.2 | Very very big string |
1.3 | Sub unit2 | 2 | .... |
Run Code Online (Sandbox Code Playgroud)
同样,QTreeWidget :: setFirstColumnSpanned()也不是必须的。
我有两个问题:
我想知道这是否是在单列树视图上进行搜索/过滤的正确方法。我觉得我的很多复制/粘贴可能包含不必要的内容。子类中的代码QSortFilterProxyModel和方法中的代码都search_text_changed需要吗?我觉得不需要正则表达式,因为我将过滤代理设置为忽略大小写。
我怎样才能做到这一点,以便当用户双击树视图项目时,信号会发出一个字符串列表,其中包含所单击项目的字符串及其递归的所有祖先?例如,如果我双击“Birds”,它将返回['Birds','Animals'];如果我双击“动物”,它只会返回['Animals'].
import os, sys
from PySide import QtCore, QtGui
tags = {
"Animals": [
"Birds",
"Various"
],
"Brick": [
"Blocks",
"Special"
],
"Manmade": [
"Air Conditioners",
"Audio Equipment"
],
"Food": [
"Fruit",
"Grains and Seeds"
]
}
class SearchProxyModel(QtGui.QSortFilterProxyModel):
def __init__(self, parent=None):
super(SearchProxyModel, self).__init__(parent)
self.text = ''
# Recursive search
def _accept_index(self, idx):
if idx.isValid():
text = idx.data(role=QtCore.Qt.DisplayRole).lower()
condition = text.find(self.text) >= 0
if condition:
return True
for childnum in …Run Code Online (Sandbox Code Playgroud)