我有一个文件,其中列出了绝对文件路径,每行1个.列出的文件是有序的,因此例如/Documents/
dir中的所有文件将在文件中彼此之后列出.
我想要做的是将所有这些文件QTreeWidget
放在一个漂亮的分层结构中,就像普通的文件系统一样.我如何从我的绝对路径文件中做到这一点?
这就是我对此进行编码的程度:
QFile file(FILENAME_ENCRYPTED);
QString line;
QDir dir;
QTreeWidgetItem *item;
if (file.open(QIODevice::ReadOnly)) {
QTextStream stream( &file );
do {
line = stream.readLine();
if (!line.isNull()) {
dir = QDir(line);
item = new QTreeWidgetItem();
item->setText(0, dir.dirName());
this->ui->treeWidget->addTopLevelItem(item);
}
} while (!line.isNull());
}
file.close();
Run Code Online (Sandbox Code Playgroud)
这工作正常,但它只列出了彼此之后的所有文件名.我想我必须做一些递归函数,但递归不是我最好的朋友,我更喜欢迭代!有人能给我一个正确的方向吗?:)
我有一个基于 QTreeWidget 的简单类。在某些情况下(当其中一列的值更新时),我需要重新绘制它。我有一个函数,当我需要更新我的小部件时调用:
void TreeWidget::updated()
{
/* some actions with cells */
/* here need to repaint widget */
this->update();
/* also I'm tried this->repaint(); */
}
Run Code Online (Sandbox Code Playgroud)
但行this->update();
(或this->repaint();
) 没有给出任何结果。仅当我单击小部件时才重新绘制它。
那么我该如何重新绘制我的小部件呢?
我需要在QTreeWidget中的项目激活时执行一些操作,但是下面的代码不会给我预期的结果:
class MyWidget(QTreeWidget):
def __init__(self, parent=None):
super(MyWidget, self).__init__(parent)
self.connect(self, SIGNAL("activated(QModelIndex)"), self.editCell)
def editCell(self, index):
print index
Run Code Online (Sandbox Code Playgroud)
要么
class MyWidget(QTreeWidget):
def __init__(self, parent=None):
super(MyWidget, self).__init__(parent)
self.connect(self, SIGNAL("itemActivated(QTreeWidgetItem, int)"),
self.editCell)
def editCell(self, item, column=0):
print item
Run Code Online (Sandbox Code Playgroud)
我做错了什么或如何以正确的方式激活项目激活?
谢谢,塞尔
我用 制作了一个树结构QTreeWidget
,效果很好。但我有一个问题。通常,对于树结构,如果我想取消选择所有,我单击树小部件的空白区域。但QTreeWidget
似乎不支持(或者我不知道如何)。
子分类或其他方法可以解决问题吗?确定点击空白区域似乎是解决方案的关键,但我找不到信号或任何东西。
我在QTreeWidget中有两列,一列代表网址列表,第二列代表结果.我已在第一列中加载了URL列表,现在我想迭代此列表,并在迭代期间更改第二列中的文本.怎么做到这一点?
setCurrentItem
只设置一个项目.我没有看到任何方法设置多个以编程方式选择的项目,但也许我忽略了什么?
当然,我的树窗口小部件配置为启用多个选择.
请注意,我正在使用QTreeWidget
,而不是QTreeView
.
我想显示QTreeWidgetItem
悬停的工具提示。但是,在我的情况下,获取工具提示并不是一个非常快的过程,因此我不想调用setTooltip()
每个项目。我想根据某些事件或信号按需执行此操作。最简单的方法是什么?
如何检查复选框是选中还是未选中?(在 QTreeWidget 中)展示了如何获取 qtreewidget 项上复选框的状态。使用该方法,通过树中 itemClicked 的信号,我可以查询是否选中了所选项目。但是,我需要跟踪这个项目,看看它以前是否被检查过。
是否有一种方法可以知道 QTreeWidgetItem(可能与父项处于不同级别)具有切换的复选框,而无需为其创建子类?
请注意,是否有特定原因未将切换方法附加到 QT 中的 QTreeWidgetItem?
我正在尝试创建一个功能,QTreeView
如果没有选择任何项目,它将选择 中的最后一个项目。我不知道如何在程序中选择一个项目。到目前为止我已经尝试过这个,但它不起作用。
if (selectedItemList.length() == 0) // no items selected
{
QItemSelectionModel *selection = new QItemSelectionModel(treeWidget->model());
QModelIndex index = treeWidget->model()->index(treeWidget->model()->rowCount() - 1,
0, QModelIndex());
selection->select(index, QItemSelectionModel::Select);
treeWidget->setSelectionModel(selection);
return;
}
Run Code Online (Sandbox Code Playgroud)
treeWidget
是一个QTreeWidget
对象,selectedItemList
是其中选定项目的列表。我将不胜感激所有的帮助。
在我的 QT 应用程序中,我有两个 QTreeWidget A 和 B。
我想为这两种行为重写拖放功能:
我认为在 dropEvent 函数中我有 event.source() 作为获取源。
但是如何使用标志更改功能以进行移动或动态复制?
有例子吗?
谢谢