标签: qtreewidget

如何为QTreeWidget创建委托?

这是我正在尝试做的事情(所有父母和孩子必须在右边有一个关闭按钮,将来,只有悬停的项目将能够显示**关闭**按钮):

在此输入图像描述

我的代表代码:

class CloseButton : public QItemDelegate
{
     Q_OBJECT

public:
     CloseButton( QObject* parent = 0 )
          : QItemDelegate( parent )
     {};

     QWidget* createEditor( QWidget* parent, const QStyleOptionViewItem& option, const QModelIndex& index ) const
     {
          if ( index.column() == 1 )
          {
               QToolButton* button = new QToolButton( parent );
               button->setIcon( QIcon( CLOSE_ICON ) );
               //button->setFixedSize( 16, 16 );
               //button->setAutoRaise( true );
               //button->setVisible( true );

               CONNECT( button, SIGNAL( clicked() ), this, SLOT( emitCommitData() ) );

               return button;
          }
          return ( …
Run Code Online (Sandbox Code Playgroud)

c++ qt delegates qt4 qtreewidget

16
推荐指数
1
解决办法
2万
查看次数

设置QTreeWidget标题文本的方法是什么?

我在这里检查了文档,我似乎无法找到设置QTreeWidget标题或标题文本的方法.

如果不设置标题,QTreeWidget会自动在我的代码中使用数字"1".输出的示例如下所示.我假设QTreeWidget有一个方法,我找不到它.

QTreeWidget示例

c++ qt qtreewidget

13
推荐指数
2
解决办法
1万
查看次数

如何自动排序QTreeWidget列?

我用a QTreeWidget来显示一些简单的项目.我通过.setSortingEnabled(true)调用将列表排序为可排序.这样,列表仅在用户按标题列时排序,而不是在插入新项目时自动排序.

有没有办法强制在指定列中自动排序而不调用.sortItems(column)每个项目插入?
如果可能,我会突出显示整个排序列.

c++ sorting qt qtreewidget

12
推荐指数
1
解决办法
1万
查看次数

在QTreeView中选择慢,为什么?

我最近在一个正在研究的项目中使用了PyQt.我有一个QTreeView连接到QAbstractItemModel,它通常有数千个节点.到目前为止,它工作正常,但我今天意识到选择很多节点非常慢.经过一番挖掘后,事实证明QAbstractItemModel.parent()经常被调用.我创建了最少的代码来重现问题:

#!/usr/bin/env python
import sys
import cProfile
import pstats

from PyQt4.QtCore import Qt, QAbstractItemModel, QVariant, QModelIndex
from PyQt4.QtGui import QApplication, QTreeView

# 200 root nodes with 10 subnodes each

class TreeNode(object):
    def __init__(self, parent, row, text):
        self.parent = parent
        self.row = row
        self.text = text
        if parent is None: # root node, create subnodes
            self.children = [TreeNode(self, i, unicode(i)) for i in range(10)]
        else:
            self.children = []

class TreeModel(QAbstractItemModel):
    def __init__(self):
        QAbstractItemModel.__init__(self)
        self.nodes = [TreeNode(None, i, unicode(i)) for i in …
Run Code Online (Sandbox Code Playgroud)

performance qt pyqt qtreewidget

12
推荐指数
1
解决办法
4513
查看次数

多选QTreeWidget

有谁知道是否有可能在QTreeWidget上选择多个项目以及如何启用多项选择?

我想要选择的所有项目都是顶级QTreeWidgetItems,并且所有子项都被设置为禁用(即QTreeWidgetItem.setDisabled(True))

select pyqt qlistwidget qtreewidget

12
推荐指数
1
解决办法
1万
查看次数

在PyQt中删除QTreeWidgetItem?

我发现找到一种删除我所选择的简单方法令人沮丧QTreeWidgetItem.

我的拼凑方法涉及将树的当前选择设置为current,然后:

if current.parent() is not None:
   current.parent().removeChild(current)
else:
   self.viewer.takeTopLevelItem(self.viewer.indexOfTopLevelItem(current))
Run Code Online (Sandbox Code Playgroud)

这并不可怕,但是没有一个命令可以直接删除该项目吗?

python pyqt qtreewidget

11
推荐指数
2
解决办法
7643
查看次数

如何将QTreeWidget中的列调整为所需的最小空间

我是学生程序员,我正在使用Qt为工作构建GUI界面.我有一个QTreeWidget共有8列.需要输入到这些列中的每一列的输入相当小.在这方面,我试图找到一种方法来将所有列重新调整到所需的最小空间.很像当你点击分隔线时执行的动作.我查看了几个网站和Qt文档,但没有找到解决方案.查看文档后,似乎有很多方法可以做到这一点,但我不能让一个工作.我开始认为我需要在某处启用/禁用某些东西.这就像我写入构建函数的更改一样(此函数清除表格;从我的向量中读取数据,在表格​​中显示某些数据,然后假设将标题/列重新调整到足够大小以适应甚至没有应用列的内容.我尝试了以下但没有任何变化:

        ui->treeWidgetInjections->setColumnWidth(i, minimumWidth());
        ui->treeWidgetInjections->resizeColumnToContents(i);
        ui->treeWidgetInjections->header()->ResizeToContents;
        ui->treeWidgetInjections->header()->resizeSection(i, minimumWidth());
Run Code Online (Sandbox Code Playgroud)

所有这些都在我的构建函数的末尾(删除了不相关的信息):

ui->treeWidgetInjections->clear();
    for (int i=0; i < qTreeInjectionData.size(); i++)
        {
            //fill Qtree with items;
            //fill QTree items with data;
            //re size function here;
        }
Run Code Online (Sandbox Code Playgroud)

请留下富有成效的反馈,因为我只对学习和克服这一挑战感兴趣.提前致谢!

c++ qt header qtreewidget

10
推荐指数
2
解决办法
2万
查看次数

如何删除QTreeWidgetItem

有几个网页说QTreeWidgetItem可以删除或删除QTreeWidget.clear.但我下面的代码示例似乎没有这样做.我做错了吗?

#!/usr/bin/python
import sys
from PySide.QtGui import QApplication, QWidget, QTreeWidget, QTreeWidgetItem
#from PyQt4.QtGui import QApplication, QWidget, QTreeWidget, QTreeWidgetItem # Result was the same with `PySide`
import time

class TreeWidgetItemChild(QTreeWidgetItem):
    def __init__(self):
        super(TreeWidgetItemChild, self).__init__()
        print 'TreeWidgetItemChild init'

    def __del__(self):
        print 'TreeWidgetItemChild del'

def test_QTree_clear_children():
    tree = QTreeWidget()
    tree.setHeaderLabel('funksoul')
    i = TreeWidgetItemChild()    
    tree.addTopLevelItem(i)    
    print 'Before clearing'
    #tree.clear()                  # Didn't call destructor (__del__)
    #tree.removeItemWidget (i, 0)  # Didn't call destructor
    #i.__del__()                   # Called destructor but it's called again afterward …
Run Code Online (Sandbox Code Playgroud)

python qt qtreewidget qtreewidgetitem pyside

9
推荐指数
2
解决办法
9682
查看次数

QTreeWidget右键菜单

我环顾四周,似乎问题不仅出现在树小部件上,也出现在其他小部件上.但就我而言,我找到了一个解决方案,虽然不完整.我正在向树窗口小部件添加操作,因此当您右键单击它时,会出现带有这些操作的弹出窗口.但是,当我向我的树窗口小部件添加项目并右键单击它们时,会出现相同的弹出窗口.我想要做的是,当您右键单击树窗口小部件时,会出现树窗口小部件弹出菜单,当您右键单击项目时,会出现另一个相应的弹出菜单.有人知道怎么做吗?

qt popupmenu qtreewidget

9
推荐指数
3
解决办法
2万
查看次数

QTreeView或QTreeWidget

我想在我的程序中实现一个嵌套子级别的树,我正在寻找这两种类型中的哪一种(View/Widget)最适合我的目标.

我有一个任务日期列表,其中包括已完成/错过/失败,每个任务都计算完成/错过/失败的次数,最后是当天的分数.

我想像这样显示它们:

树显示

我在QtCreator中使用QTreeWidget做了这个例子,但是我担心修改元素很难,因为它们存储在其他地方.

我的担忧是否合理,我应该转到模型/视图结构,还是可以轻松使用QTreeWidget?树将记录任务,因此将不断变化.元素只会添加到它,而不是删除.日期将从最高 - 最低(第2天,第1天,第1天)排序

treeview qt design-patterns qtreewidget model-view

8
推荐指数
1
解决办法
7954
查看次数