标签: qtreewidget

QTreeWidget关闭选择

默认情况下,a QTreeWidget管理行的选择(当您单击一行时,它会突出显示该行,当您单击另一行时,它会突出显示该行并取消选择上一行),我不希望这样做,也无法弄清楚如何将其关闭。

python qt pyqt qtreewidget

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

如何阻止QTreeWidget移动滚动位置?

我有一个QTreeWidget和一堆QTreeWidgetItems.每个项目都有几列.当其中一列宽度小于窗口小部件的宽度时,底部会有一个滚动条.当我在比窗口小部件更宽的列中单击QTreeWidgetItem时,QTreeWidget将自动滚动以尝试尽可能多地获取窗口小部件中的列.我不希望这种情况发生.我怎么关掉这个?

python qt scroll pyqt qtreewidget

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

通过QTreeWidget节点迭代

正如我在过去几个月中多次发布的那样,我正在Qt写一篇期刊/日记应用程序.条目按年,月,日和条目(按天分类条目的默认配置)或年,月和条目(同一月份的所有条目分组在一起)在QTreeWidget中排序

入口节点有两列:第一列是可见的并保存条目名称.第二列是不可见的,并保存数据库中相应条目的行号.选择该条目后,程序将根据该行号执行选择查询并显示内容.Root,year,month,(和day,如果已启用)节点也有第二列,但其中的行号始终为-1.(有效行数从0开始)

日志工具栏已具有后退和前进按钮,用户可以查看下一个和上一个条目.虽然此功能已经有效,但树中当前选定的项目不会随之改变,而这正是我想要解决的问题.

我已经确定最好的方法是使用循环函数扫描每个的第二个隐藏列值,直到找到正确的行号.每次单击后退/前进按钮都会再次调用此功能,因此一旦我开始工作,所选节点将始终与正在查看的当前条目匹配.

缺点是如果数据库变得庞大,这种方法可能会很慢,但我无能为力.用户可能会删除条目或将其随机播放,因此仅依靠rownumber ++或rownumber--可能会导致问题.由于数据库没有填写缺失的行号但只是继续下一行,如果程序总是假定数据库中的每一行在任何给定时间仍然存在,则可能会出现问题.

我的问题是如何扫描QTreeWidget中每个节点的特定列?

c++ qt qtreewidget

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

QTreeWidget :: currentItem什么都没有选中时返回什么?

我是一名学生程序员,使用Qt开发GUI应用程序.我正在使用QTreeWidget来显示存储在向量中的一些属性.在同一个窗口中,我有按钮编辑,复制和删除.到目前为止,这些按钮可以满足他们的需求; 但是当我没有选择任何东西时,我遇到了问题.我的程序意外地完成了; 我猜一个段错误.我不认为我正在处理正确选择的currentItem.但是,如果没有选择任何内容,Qt的文档就没有说明返回的内容.所以我希望有更多经验的人帮助/启发我.如果有什么东西你想看看包含的代码的一面只是问.这是我的(相关)代码:

#include "injectiongui.h"
#include "ui_injectiongui.h"
#include "injectiondialog.h"
#include "ui_injectiondialog.h"
#include "injectiondata.h"
#include <QMessageBox>

InjectionGUI::InjectionGUI(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::InjectionGUI)
{
    ui->setupUi(this);
    ui->groupBoxGlobalParticlesPerCell->hide();
    connect(ui->pushButtonEdit, SIGNAL(clicked()), this, SLOT(slotInjectionEdit()));
}

void InjectionGUI::buildTreeWidget() 
{   
   //Build or Refresh Tree Widget with info from the vector
}

void InjectionGUI::editInjection_Clicked(QTreeWidgetItem *itemToEdit) //Creates an Injection Dialog to edit an Item from the Vector
{
    QString converter = itemToEdit->text(0);
    int id = converter.toInt();
    InjectionDialog editInjectionDialog;
    InjectionData presetValues;
    if(itemToEdit == 0) // this was my attempt …
Run Code Online (Sandbox Code Playgroud)

c++ qt user-input qtreewidget qtreewidgetitem

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

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

在 QTreeWidget 中显示文件系统

我有一个简单的问题。我想像普通文件浏览器一样在 QTreeWidget 中显示我的文件系统。

我怎样才能做到这一点?我想搜索所有文件并手动添加它们不是选择的方法,对吗?

c++ qt qtreewidget

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

比较 QTreeView/QAbstractItemModel 和 QTreeWidget

我正在 PySide 中为 Maya(3D 软件)构建一个工具,它可以自动版本并将文件保存在一个目录中。

过去几天我一直在尝试将我的初始 QTreeWidget 代码转换为带有 QTreeView 和 QAbstractItemModel 的模型/视图模式,以获取工具提示和其他功能,但我发现这比预期的要难。当我学习一种新的编码语言/技术时,我喜欢找到两个做同样事情的脚本——一个使用新技术,一个使用旧技术。这样我就可以比较和分解新代码正在做什么。

我最大的障碍是我很难找到一个 QTreeView 示例来完成我的 QTreeWidget 示例。此外,大多数示例手动填充 QTreeView 这对我也没有多大帮助。如果有人可以修改 QTreeView 代码,这样它就可以完成我的 QTreeWidget 代码所做的事情,那就太好了。对 QTreeView 最佳实践的评论也很棒!

我的 QTreeWidget 代码目前...

1) 从源获取字符串列表并将它们列在第一列中

2) 从每个字符串中获取日期并将其放在第二列中

QTreeView 代码:

from PySide import QtCore, QtGui
from shiboken import wrapInstance
import maya.OpenMayaUI as mui
import sys, os

def get_parent():
    ptr = mui.MQtUtil.mainWindow()
    return wrapInstance( long( ptr ), QtGui.QWidget )   

################################################################################
class MyTree(QtGui.QMainWindow):
    def __init__(self, parent=get_parent() ):
        super(MyTree, self).__init__(parent)

        data = MyData.init()
        frame = QtGui.QFrame();
        frame.setLayout( QtGui.QHBoxLayout() ); …
Run Code Online (Sandbox Code Playgroud)

python qtreewidget qtreeview pyside qabstractitemmodel

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

如何从元组填充 QTreeWidget?

我对 Python 还很陌生,所以请耐心等待。我试图从元组填充 QTreeWidget,但我似乎无法让它太工作。

TreeList = ({

    'Header1': ((
        'Item1',
        'Item2',
    )),

    'Header2': ((
        'Item1',
        'Item2'
    ))
})
Run Code Online (Sandbox Code Playgroud)

这个想法是我想创建一个 QTreeWidget 看起来像:

ROOT
  |
  |-- Header1
  |    |-- Item1
  |    |-- Item2
  |
  |-- Header2
       |-- Item1
       |-- Item2
Run Code Online (Sandbox Code Playgroud)

我一直在网上搜索以找到解决方案,但我尝试的任何方法似乎都不起作用,解决此问题的最佳方法是什么。

widget = QTreeWidget()

for i in TreeList:
    val = QTreeWidgetItem([i])
    widget.addTopLevelItem(val)

for i in TreeList['Header1']
    val = QTreeWidgetItem([i])
    widget.Header1.addChild(val)  # DONT THINK THIS IS RIGHT

for i in TreeList['Header2']
    val = QTreeWidgetItem([i])
    widget.Header2.addChild(val)  # DONT THINK THIS IS RIGHT
Run Code Online (Sandbox Code Playgroud)

第一个 for …

python qtreewidget qtreewidgetitem python-3.x pyqt5

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

PyQt [QTreeWidget]:如何为项目添加单选按钮?

对于这个问题,我指的是@Andy PyQt Tree Widget的答案,添加了动态删除复选框

@Andy 展示了如何添加CheckBox到 中QTreeWidget,效果很好。

我想在这里问,如何添加RadioButtonQTreeWidget?----而且,这对我来说更困难,如何使只有一个项目可供选择,尽管它们不同groups

我将@Andy 中的代码重写为 PyQt5:

from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
import sys

def main(): 
    app     = QApplication (sys.argv)
    tree    = QTreeWidget ()
    headerItem  = QTreeWidgetItem()
    item    = QTreeWidgetItem()

    for i in range(3):
        parent = QTreeWidgetItem(tree)
        parent.setText(0, "Parent {}".format(i))
        parent.setFlags(parent.flags() | Qt.ItemIsTristate | Qt.ItemIsUserCheckable)
        for x in range(5):
            child = QTreeWidgetItem(parent)
            child.setFlags(child.flags() | Qt.ItemIsUserCheckable) …
Run Code Online (Sandbox Code Playgroud)

python pyqt qtreewidget qradiobutton pyqt5

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

任意选择的 QTreeWidgetItems 的样式悬停和选定颜色

我有一个QTreeWidget并且我有一个应用于它的样式表。我希望其中一些QTreeWidgetItem具有与其他样式表样式项目不同的颜色hover和颜色。selectednormal为状态着色setData(columnNumber, Qt::ForegroundRole, colorName),但无法更改悬停和选定状态的颜色。

有谁知道是否可以通过Qt某种方式实现这一目标?

谢谢!

qt stylesheet qtreewidget qtreewidgetitem qstyle

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