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

我用一个自定义委托我QTableView中显示组合框的列。 该值是所有组合框一样的,所以它不是一个真正的人口部分,让我的麻烦。

我希望他们能够显示为选定的项目,有些价值,我可以从数据库中检索。 我有机会从代表数据库中,但为了送我的要求,我需要ComboBox的一行。

所以我想我的问题是:你怎么能遍历表中的所有行,并从自定义委托里面做一些动作?

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

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)

我把它叫做fromthe QTableView中是这样的:

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

希望我是不够清楚,感谢您的关注

--------------解决方案-------------

不知道从委托访问数据库是做正确的事。 您的代理可以包含参考QAbstractTableModel的实例,它的QTableView中提到。 然后,您可以使用的方法在模型中遍历表的行。

分类:组合框 时间:2012-01-01 人气:4
分享到:

相关文章

  • 组合框复位选择组合框在Windows应用程序中的文本 2013-01-24

    我已经添加的项目1 2 3的组合框. 然后,我给了"选择"组合框的文本. 我如何能重新组合框中选择文本("选择"). 我曾试图通过给-1到的SelectedIndex. 但它仅给出空. 这是VB.NET Windows应用程序 我给了一个图像,供您参考 对于参考图像的路径 谢谢. 巴布Kumarasamy的. [1]: --------------解决方案------------- 设为0值SelectedIndex属性. 它会选择第一个列表项. private S

  • iphone,如何创建组合框像在此图像中(生日组合框) 2012-01-04

    如何显示组合框就像一个你的图像(生日组合框)看到这个网站:http://www.edumobile.org/iphone/iphone-programming-tutorials/how-to-use-picker-in- iphone / 它是的UITextField和UIButton的...我怎样才能创造这样的控制? --------------解决方案------------- 我认为这是一个自定义按钮,图像看起来像组合框. 按下它可能会打开一个日期选择器. 你需要看起来像组合框和自定义你

  • WPF DataGridComboBoxColumn`s组合框才可见在DataGrid中拥有的IsReadOnly = FALSE 2012-02-12

    为什么该列通过唯一可见的组合框双击空单元格在DataGrid设置的IsReadOnly = FALSE ??? <DataGridComboBoxColumn Width="*" IsReadOnly="False" Header="test" /> 使用DataTemplateColumn作品一如既往......什么错DataGridComboBoxColumn? 作品: <DataGridTemplateColumn Hea

  • 环通组合框,并与数据库中的数据进行比较 2012-02-24

    我不得不在组合框尝试多种方法进行循环,但它不会工作... for (Int16 i = 0; cbxrecipe.Items.Count - 2 >= i; i++) { if (cbxrecipe(i).Items.ToString() != Reader_recipe1.GetValue(0).ToString())` { //update the combobox; } } 意味着我需要遍历组合框,检查组合框里面的物品是否是相同的,在数据​​库中的数据,如果同样的,也不会进行更新,否则,组

  • WPF Datagrid的组合框结合彼此在DataGrid中 2012-03-14

    如何获得一个WPF数据网格组合框到DataGrid元素中结合. 例如:我的人=>姓名,年龄和性别的集合. 富,18岁,男 嘘,21,男 FooBoo,30,女 现在,在数据网格中我有一个组合框(DataGridComboBoxColumn)的名字的集合,仅靠(富,嘘,FooBoo)ItemsSoure和两个DataGridTextBoxColumn. 数据网格是绑定到的ObservableCollection或数据表. 现在,当用户选择一个名称. 的年龄和性别显示(绑定)在两个DataGridT

  • DataGridView的组合框柱:从下拉列表中选择后更改单元格的值? 2012-07-21

    我已经建立了ComboBoxColumn我的DataGridView和枚举设置其可选值. 它主要是工程,我会与下面的异常喜欢. 每当我点击下拉箭头,然后选择枚举值之一,它仍然是那种在不触发CellValueChanged事件"中间"状态. 我需要关注的另一个单元格或其他控件的事件触发. 我也有在DataGridView的离开事件的事件处理它通过确保无电池是空的"验证"的内容. 所以,如果我创建一个行并填写所有的细胞,并来到(目前为空白)组合框列,将其更改为一个值,然

  • 组合框的数据在Silverlight中绑定的问题 2012-11-06

    我加载我的网页上5组合框和我装我4组合框全无任何问题,但5日一个是给我一个地狱.. 我会后,我在这里做的代码...请纠正我,如果我错了.. <ComboBox Height="23" HorizontalAlignment="Left" Margin="605,131,0,0" Name="Cboadproducts" VerticalAlignment="Top" Width="168&q

  • 通过表格组合框在筛选Access 2010中插入默认值。 2012-12-04

    我有一个组合框形式,ft_m. 值列表为"英尺";"M". 默认值是"英尺". 在Access 2010,按窗体筛选,在那个盒子"FT"打开. 我不能删除"英尺". 清除网格不能清除它. 有没有办法从过滤器去除[ft_m] ="英尺". 这并没有在Access 2007虽然默认值是"FT"发生,按窗体筛选openned在Access 2007中,因为它应该组合框为空,

  • 组合框是不是在C#中的DataGridView显示的默认值 2013-02-23

    我试图让用户从DataGridViewComboBoxColumn每个新行选择值. 我势必组合框在GridView的数据库,但每当我进入新行我看DataGridViewComboBoxColumn没有初始值. 我必须先设置的值. 怎样才能让我的默认值出现在DataGridViewComboBoxColumn每当我在DataGridView中输入新行? 这就是我如何绑定的DataGridView组合框数据库: bindingSource1.DataSource = itemBAL.GetTable

  • 组合框 - 使用document_open Word 2007中的多个组合框共享同一个磁盘阵列 2013-04-04

    你好 , 想知道是否有这方面的任何快捷方式程序? 我有很多组合框的它使用相同的阵列. 目前,采用这种方法是工作,但很乏味不必listdown所有的组合框. 私人小组Document_Open() Applicationscreenupdating =假 昏暗myArray的为Variant 昏暗myArray2为Variant 昏暗myArray3为Variant myArray的=阵列("OPEN","OK","NOT OK","需要

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.968 (s). 10 q(s)