从 QTableView 自定义委托中选择组合框的项目

2024-01-03

我使用自定义委托在 QTableView 中显示一列组合框。 所有组合框的值都是相同的,因此给我带来麻烦的并不是人口部分。

我希望它们显示为所选项目,即我可以从数据库检索的一些值。我可以从委托访问数据库,但为了发送我的请求,我需要组合框的行。

所以我想我的问题是:如何迭代表的所有行并从自定义委托内部执行一些操作?

如果它可以帮助这里是我的自定义委托类:

class ComboBoxDelegate(QtGui.QItemDelegate):

def __init__(self, parent, itemslist):
    QtGui.QItemDelegate.__init__(self, parent)
    self.itemslist = itemslist
    self.parent = parent

def paint(self, painter, option, index):        
    # Get Item Data
    value = index.data(QtCore.Qt.DisplayRole).toInt()[0]
    # value = self.itemslist[index.data(QtCore.Qt.DisplayRole).toInt()[0]]
    # fill style options with item data
    style = QtGui.QApplication.style()
    opt = QtGui.QStyleOptionComboBox()
    opt.currentText = str(self.itemslist[value])
    opt.rect = option.rect


    # draw item data as ComboBox
    style.drawComplexControl(QtGui.QStyle.CC_ComboBox, opt, painter)
    self.parent.openPersistentEditor(index)

def createEditor(self, parent, option, index):

    ##get the "check" value of the row
    # for row in range(self.parent.model.rowCount(self.parent)):
        # print row

    self.editor = QtGui.QComboBox(parent)
    self.editor.addItems(self.itemslist)
    self.editor.setCurrentIndex(0)
    self.editor.installEventFilter(self)    
    self.connect(self.editor, QtCore.SIGNAL("currentIndexChanged(int)"), self.editorChanged)

    return self.editor

# def setEditorData(self, editor, index):
    # value = index.data(QtCore.Qt.DisplayRole).toInt()[0]
    # editor.setCurrentIndex(value)

def setEditorData(self, editor, index):
    text = self.itemslist[index.data(QtCore.Qt.DisplayRole).toInt()[0]]
    pos = self.editor.findText(text)
    if pos == -1:  
        pos = 0
    self.editor.setCurrentIndex(pos)


def setModelData(self,editor,model,index):
    value = self.editor.currentIndex()
    model.setData(index, QtCore.QVariant(value))


def updateEditorGeometry(self, editor, option, index):
    self.editor.setGeometry(option.rect)

def editorChanged(self, index):
    check = self.editor.itemText(index)
    id_seq = self.parent.selectedIndexes[0][0]
    update.updateCheckSeq(self.parent.db, id_seq, check)

我从 QTableView 中调用它,如下所示:

self.setEditTriggers(QtGui.QAbstractItemView.CurrentChanged)
self.viewport().installEventFilter(self)
self.setItemDelegateForColumn(13,ComboBoxDelegate(self, self.checkValues))

希望我说得足够清楚,感谢您的关注


不确定从委托访问数据库是否正确。您的委托可以包含对 QTableView 引用的 QAbstractTableModel 实例的引用。然后,您可以使用模型中的方法来迭代表的行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 QTableView 自定义委托中选择组合框的项目 的相关文章

  • 如何在子进程期间和之后执行操作

    我有一个调用子程序的程序 当子程序使用 Popen 运行时 我需要禁用运行按钮并启用停止按钮 但是 由于Popen打开了一个新进程 因此程序完成后应该打印的内容会立即打印出来 我尝试添加self p communicate after Po
  • 使用字典作为数据源绑定组合框

    我正在使用 NET 2 0 并且尝试将组合框的数据源绑定到已排序的字典 所以我收到的错误是 在数据源上找不到 DataMember 属性 Key SortedDictionary
  • 带有对象的 Javafx 可编辑组合框

    我刚刚开始学习 Java Fx 我有一个装满物体的组合框 我处理了 toString 方法 我可以看到我想要在屏幕上显示的名称 但现在我想让它可编辑 用户将输入自己的文本 ComboBox 将创建一个新对象并将该文本放入正确的字段中 我知道
  • 如何使 QTreeWidget 中的特定列成为整数/浮点数,以便用户无法输入任何字母或符号而不是整数/浮点数?

    我正在 PyQt5 中使用 QTreeWidget 制作 GUI 我希望特定列仅是整数列 用户不应该能够在其中输入任何非整数项 我看到了一些使用 QVariant 的方法 但它似乎不能满足我的要求 这就是我的found https stac
  • 在 py2exe 编译的 Python 脚本中启用 QImage 的 JPEG 支持?

    我正在尝试通过 PyQt4 在 Python 脚本的 QImage 对象中使用 JPEG 图像 脚本本身工作完美 图像加载并且可以操作和渲染等等 但是 当我尝试使用 py2exe 编译 此脚本时 除了 JPEG 图像之外 一切正常 用等效的
  • 显示 python 的 XML 解析器加载大文件时的进度

    我使用 Python 内置的 XML 解析器来加载 1 5 gig XML 文件 这需要一整天的时间 from xml dom import minidom xmldoc minidom parse events xml 我需要知道如何进入
  • 使用组合框过滤文本框

    好吧 我必须创建一个表单 它获取文件夹的内容并将其列出在文本框中 是的 文本框不是列表框 然后 我必须使用包含文件夹所有扩展名的组合框来过滤此文本框 例如 如果我在组合框中选择 txt 则文本框应过滤以仅显示所有文本文件 除了让组合框过滤文
  • 多级QTreeView

    我很难理解如何使用 QTreeView 和 QStandardItemModel 设置多级 QTree 这是我所拥有的 from PySide QtGui import import sys class MainFrame QWidget
  • 如何在Python中创建一个派生自QObject的抽象基类

    我正在尝试为接口创建一个抽象基类 但我需要它从 QObject 派生信号和槽 我的类定义如下 import abc from PyQt5 QtCore import QObject class interface class abc ABC
  • C#/WPF:将 Datagrid 中的 Combobox ItemSource 绑定到 DataContext 外部的元素

    我想做以下事情 public List
  • 如何将图标放置到 QLineEdit 上?

    stackoverflow com 网站的右上角有一个带有放大镜头的搜索字段和一个灰色的 搜索 关键字 我想知道是否有可能实现相同的外观QLineEdit 如果是这样那怎么办 QLineEdit lineEdit new QLineEdit
  • 从 Qthread 更新 Python GUI 元素

    所以我知道有很多关于使用 Qthread 更新 GUI 中的元素的帖子 我尽了最大努力去检查这些 但仍然有一个问题 我正在尝试创建一个 GUI 该 GUI 在单击按钮时运行一个方法 然后该方法启动一个新线程 然后该线程向 GUI 发出信号以
  • PyQt 和 unittest - 测试信号和槽

    我有一个 pyqt 应用程序 正在为其编写单元测试 它严重依赖信号和槽 为了正确测试它 我必须检查是否发送了正确的信号 做这个的最好方式是什么 我看到 Qt 库有一个 QSignalSpy 但我在 PyQt 中找不到任何对此的引用 我能想到
  • 如何在 Qt 中以编程方式制作一条水平线

    我想弄清楚如何在 Qt 中制作一条水平线 这很容易在设计器中创建 但我想以编程方式创建一个 我已经做了一些谷歌搜索并查看了 ui 文件中的 xml 但无法弄清楚任何内容 ui 文件中的 xml 如下所示
  • 如何将 sql 数据输出到 QCalendarWidget

    我希望能够在日历小部件上突出显示 SQL 数据库中的一天 就像启动程序时突出显示当前日期一样 在我的示例中 它是红色突出显示 我想要发生的是 当用户按下突出显示的日期时 数据库中日期旁边的文本将显示在日历下方的标签上 这是我使用 QT De
  • 更改QLineEdit的ClearButton图标

    我想在Windows 10 1909 64位 上的Python 3 8和PyQt5 5 15 0 上更改我的QLineEdit的ClearButton图标 稍后我想在Linux上运行代码 我尝试应用此处找到的代码 如何在 QLineEdit
  • Pyqt-如何因另一个组合框数据而更改组合框数据?

    我有一个表 有 4 列 这 4 列中的两列是关于功能的 一个是特征 另一个是子特征 在每一列中 所有单元格都有组合框 我可以在这些单元格中打开txt 我想 当我选择电影院作为功能时 我只想看到子功能组合框中的电影名称 而不是我的 数据 中的
  • Pyqt5 中的 QThreads:这是官方 QThread 文档的正确 C++ 到 Python 翻译吗?

    关于如何实例化和使用的官方文档QThread可以在这里找到 http doc qt io qt 5 qthread html http doc qt io qt 5 qthread html 该文档描述了两种基本方法 1 工作对象方法和 2
  • WPF DataGridTemplateColumn 组合框更新所有行

    我有这个 XAML 它从 ItemSource 是枚举的组合框中选择一个值 我使用的教程是 http www c sharpcorner com uploadfile dpatra combobox in datagrid in wpf h
  • 如何在PYQT中创建按钮点击

    我在 PyQT 中创建按钮单击时遇到了一些问题 当我创建如下按钮的点击时 这张图片无法保存 cv SetImageROI image pt1 0 pt1 1 pt2 0 pt1 0 int pt2 1 pt1 1 1 if self But

随机推荐

  • 将 NgbDate 转换为用于格式化目的的时刻:第一个月分配为 0 与 1 的问题

    我有一个 Ngb Datepicker 可以进行范围选择 我正在使用 moment js 将 NgbDate 转换为 moment 对象 以便我可以按照我的意愿隐藏和输出格式 例如 1 月 23 日星期三 我意识到 NgbDates 给一月
  • GLib哈希表循环问题

    我要使用GLib http en wikipedia org wiki GLib的哈希表在 C 程序中的实现 仅此而已 我只是在尝试 我写了下面一段代码进行测试 include
  • 如何解决 TFS 错误 TF237086“无法保存工作项...”

    我在 TFS 2010 构建中收到以下错误 无法更新工作项 59 TF237086 无法保存工作项 因为至少有一个字段包含不允许的值 工作项 59 是我创建的一项基本任务 用于在签入时与我的变更集关联 我没有对 任务 工作项进行任何自定义
  • isDisplayed 对于 Protractor 中的可见元素返回 false

    EDIT 4 突破 我开始递归地遍历父节点并返回与下面相同的值 父母之一 内在mat drawer container isDisplayed 也返回 false 所有其他都返回 true 这看起来很奇怪 查看该节点 结果发现它是网站上唯一
  • 从 Python 调用 C:传递 numpy 指针列表

    我有数量可变的 numpy 数组 我想将其传递给 C 函数 我设法传递了每个单独的数组 使用
  • 如何在 SQL Server 中创建和查询链接数据库服务器?

    我需要跨两个不同的数据库服务器 IP 10 0 0 50 和 10 0 0 51 进行联接 最好的办法是什么 我找到的解决方案 1 运行存储过程 http msdn microsoft com en us library aa259589
  • 如何配置 CLion 标准控制台输出?

    Problem CLion 不会出于调试目的输出任何控制台输出 我将 CLion 与 MingW 编译器和 cmake 一起使用 无论我是否使用 std cout lt lt Testing lt lt std endl Or printf
  • 即使光标不受控制,也能接收鼠标移动

    我做了类似滚动条的事情Control 一切都很好 但是当光标离开控制区域时 OnMouseMove不再收到 当您使用标准 Windows 滚动条时 即使鼠标光标位于控件表面之外 也可以使用它 为了避免这种情况 我唯一的想法是从屏幕获取光标位
  • 有没有办法将设计器文件与其 cs 文件重新绑定/关联?

    我在 Xamarin 中有一个项目 并且我的 designer cs 文件不再嵌套在其 cs 文件下 这会导致编译错误 有没有办法再次关联它们以便我可以编译我的项目 请参见下图 ListHeader 与 ListTableView 编辑您的
  • 在 firebase 数据库中搜索具有特定键值的元素对象

    我正在尝试在 firebase 数据库中使用 userkey 的特定值进行搜索 但我遇到了以下问题 我想获取 如果我传递用户密钥 11112 那么当我传递 11113 时 就会出现两条记录 然后就会出现一条记录 尽管我尝试使用下面的代码但出
  • 如何在Rails应用程序中使用sendgrid发送电子邮件的响应以保存在数据库中

    我已经使用sendgrid和actionmailer通过rails应用程序发送了电子邮件 我也收到了邮件 但我希望在我的 Rails 应用程序中显示 sendgrid 发送的电子邮件的状态 打开 发送 退回 以便我可以将特定电子邮件的响应保
  • Sql JOIN顺序会影响性能吗?

    当我遇到这个查询时 我正在整理一些sql SELECT jm IMEI jm MaxSpeedKM jm MaxAccel jm MaxDeccel jm JourneyMaxLeft jm JourneyMaxRight jm Dista
  • 使用 NEST 进行多字段的正确方法

    我想用 NEST 实现全文搜索和标记化搜索 所以我想获得这样的多字段 tweet properties message type string store true fields raw type string index not anal
  • 使用 jQuery 从 asp:RadioButtonList 读取所选值

    我有类似于以下的代码 p p
  • 如何判断H2数据库文件锁是否存在?

    由于我不会解释的原因 因为人们会将他们的反应指向另一个主题 而不是我手头的问题 我需要知道如何确定我的 H2 数据库是否被锁定 使用 Java 代码 如何确定数据库中是否存在锁定文件 对于阅读这个问题的其他人 我需要解释一下为什么你不应该自
  • 导入错误:没有名为“setuptools.build_meta”的模块

    我在解决这个问题时遇到了麻烦 当尝试安装软件包 在本例中为 zipline 时 很难找到 setuptools build meta 文件 而我确实在 site packages setuptools 目录中拥有该文件 尽管我很无知 但我尝
  • 如何找到UILabel的行数

    我使用换行方法在 UILabel 中显示文本 现在我想知道 UILabel 中有多少行 如果有任何可能的方法可以找到 UILabel 的行数 Thanks 正如所指出的 这篇文章涉及如何获取高度 而不是行数 要获取行数 获取单个字母的高度
  • 中断 Simpy 中较早的超时事件

    我想创建一个带有服务器的系统 在准备好提供服务之前需要时间进行设置 每当有顾客到达队列时 就会建立一个服务器 先到的顾客将抢占先打开的服务器 如下所示 客户 1 到达并请求服务器 服务器 1 在 t1 秒内完成设置 客户 2 到达并请求服务
  • Wordpress 插件激活标头已发送错误

    我快要疯了 错误 插件在执行期间生成了 4 个意外输出字符 激活 如果您注意到 标头已发送 消息 则存在问题 对于联合供稿或其他问题 请尝试停用或删除 这个插件 删除不必要的空白或换行符 这将消除错误 也删除最后一个 gt 尝试下面的代码
  • 从 QTableView 自定义委托中选择组合框的项目

    我使用自定义委托在 QTableView 中显示一列组合框 所有组合框的值都是相同的 因此给我带来麻烦的并不是人口部分 我希望它们显示为所选项目 即我可以从数据库检索的一些值 我可以从委托访问数据库 但为了发送我的请求 我需要组合框的行 所