gpt4 book ai didi

python - 如何将 QTableView 项目方向从垂直更改为水平?

转载 作者:行者123 更新时间:2023-12-01 04:53:21 24 4
gpt4 key购买 nike

下面的代码创建一个窗口,其中两个并排放置的 QTableView:

enter image description here

左侧TableView链接到QAbstractTableModel。根据 Model.data() 中定义的逻辑,tableView 的项目垂直定位。

右侧 TableView 链接到 QSortFilterProxyModel。我想用它来将垂直 TableView 项目放置更改为水平放置。

请发表您关于如何实现这一目标的建议。如果更改项目方向的解决方案不需要 ProxyModel 就可以了...只要它有效!

源代码稍后发布。

from PyQt4.QtCore import *
from PyQt4.QtGui import *
import sys

class Model(QAbstractTableModel):
def __init__(self, parent=None, *args):
QAbstractTableModel.__init__(self, parent, *args)
self.items = ['Row0_Column0','Row0_Column1','Row0_Column2']

def rowCount(self, parent):
return len(self.items)
def columnCount(self, parent):
return 1

def data(self, index, role):
if not index.isValid(): return QVariant()
elif role != Qt.DisplayRole:
return QVariant()

row=index.row()
if row<len(self.items):
return QVariant(self.items[row])
else:
return QVariant()

class Proxy(QSortFilterProxyModel):
def __init__(self):
super(Proxy, self).__init__()

def rowCount(self, parent):
return 1
def columnCount(self, parent):
sourceModel=self.sourceModel()
return len(sourceModel.items)

def filterAcceptsRow(self, row, parent):
sourceModel=self.sourceModel()
sourceModelIndex=sourceModel.index(row, 0, QModelIndex())

sourceModelIndexName=sourceModel.data(sourceModelIndex, Qt.DisplayRole).toString()
return True

class MyWindow(QWidget):
def __init__(self, *args):
QWidget.__init__(self, *args)

tablemodel=Model(self)

proxy=Proxy()
proxy.setSourceModel(tablemodel)

tableviewA=QTableView()
tableviewA.setModel(tablemodel)

tableviewB=QTableView()
tableviewB.setModel(proxy)

layout = QHBoxLayout(self)
layout.addWidget(tableviewA)
layout.addWidget(tableviewB)
self.setLayout(layout)

def test(self, arg):
print arg

if __name__ == "__main__":
app = QApplication(sys.argv)
w = MyWindow()
w.show()
sys.exit(app.exec_())

最佳答案

有趣的任务...

class Model2(QAbstractTableModel):
def __init__(self, model, parent=None):
self.model = model
QAbstractTableModel.__init__(self, parent)

def rowCount(self):
return self.model.columnCount()

def columnCount(self):
return self.model.rowCount()

def data(self, a, b):
return self.model.data(b, a)

关于python - 如何将 QTableView 项目方向从垂直更改为水平?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27992875/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com