首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将QComboBox放在QColumnView中

如何将QComboBox放在QColumnView中
EN

Stack Overflow用户
提问于 2016-07-06 19:27:20
回答 1查看 250关注 0票数 2

场景:我需要在qcolumnview的第4列中放置一个组合框,这样用户就可以选择ON或OFF。

描述:在将来将被保存为一个XML文件,这样用户就可以选择参数并生成一个定制的文件。有人能告诉我怎么做吗?

代码语言:javascript
复制
import sys

from PyQt4 import QtGui, QtCore


class xml_creator(QtGui.QMainWindow):
    def __init__(self):
        super(xml_creator, self).__init__()
        self.initUI()

    def initUI(self):

        column_view = QtGui.QColumnView(self)
        self.setCentralWidget(column_view)

        m_model = QtGui.QStandardItemModel()
        column_view.setModel(m_model)
        column_view.setAlternatingRowColors(True)

        self.test_variables = {}
        self.test_variables['OPTION_1'] = ['OFF', 'ON']
        self.test_variables['OPTION_2'] = ['OFF', 'ON']

        self.iq_xml = {}
        self.iq_xml['TEST_1'] = {}
        self.iq_xml['TEST_1']['Test_case_1'] = self.test_variables

        for x in self.iq_xml:

            if not self.iq_xml[x]:
                continue
            parent = QtGui.QStandardItem(x)
            parent.setFlags(QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsSelectable)

            for y in self.iq_xml[x]:
                if not self.iq_xml[x][y]:
                    continue
                child0 = QtGui.QStandardItem(y)
                child0.setFlags(QtCore.Qt.ItemIsEnabled)
                parent.appendRow(child0)


                for z in self.iq_xml[x][y]:
                    if not self.iq_xml[x][y][z]:
                        continue

                    grand_child = QtGui.QStandardItem(z)
                    grand_child.setFlags(QtCore.Qt.ItemIsEnabled)
                    child0.appendRow(grand_child)

                    value = self.iq_xml[x][y][z]
                    grand_grand_child = QtGui.QStandardItem(str(value))
                    grand_grand_child.setFlags(QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsEditable)
                    grand_child.appendRow(grand_grand_child)

            column_view.model().appendRow(parent)

        column_view.setColumnWidths([200, 200, 200, 100])

        self.setGeometry(300, 300, 1000, 300)
        self.setWindowTitle('IQ XML Creator')
        self.show()

def main():
    app = QtGui.QApplication(sys.argv)
    ex = xml_creator()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-11 12:54:19

我找不到解决办法,但我找到了解决办法,所以我希望能帮助那些和我有同样问题的人。

当我在尝试时无法将组合框放到QColumnView中时,我的解决方法是创建一个填充了我想要的组合框的表,然后将这个QTable设置为QColumnView中的预览小部件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38232231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档