我有一个带有一列复选框的table类。我想把这些放在列的中心,但是使用item.setTextAlignment(Qt.AlignCenter)
不起作用
from PyQt5.QtWidgets import *
from PyQt5.QtCore import (QDate, QDateTime, QRegExp, QSortFilterProxyModel, Qt,
QTime, QModelIndex, QSize, pyqtSignal, QObject)
from PyQt5.QtGui import QStandardItemModel, QIcon, QStandardItem
class Table(QWidget):
def __init__(self, parent=None):
QWidget.__init__(self, parent)
self.initUI()
self.show()
def initUI(self):
mainLayout = QVBoxLayout()
self.proxyModel = QSortFilterProxyModel()
self.proxyModel.setDynamicSortFilter(True)
self.sourceModel = QStandardItemModel(0, 2, self)
self.sourceModel.setHeaderData(0, Qt.Horizontal, '')
self.sourceModel.setHeaderData(1, Qt.Horizontal, 'Value')
self.proxyModel.setSourceModel(self.sourceModel)
self.proxyGroupBox = QGroupBox('data')
self.proxyView = QTreeView()
self.proxyView.setRootIsDecorated(False)
self.proxyView.setAlternatingRowColors(True)
self.proxyView.setModel(self.proxyModel)
self.proxyView.setEditTriggers(QAbstractItemView.NoEditTriggers)
proxyLayout = QGridLayout()
proxyLayout.addWidget(self.proxyView, 0, 0, 1, 3)
self.proxyGroupBox.setLayout(proxyLayout)
mainLayout.addWidget(self.proxyGroupBox)
self.setLayout(mainLayout)
for i in range(5):
self.proxyView.resizeColumnToContents(0)
item = QStandardItem(True)
item.setCheckable(True)
item.setCheckState(False)
#item.setTextAlignment(Qt.AlignCenter)
self.sourceModel.setItem(i, 0, item)
self.sourceModel.setData(self.sourceModel.index(i, 1), i+1)
def setSourceModel(self, model):
self.proxyModel.setSourceModel(model)
if __name__=='__main__':
import sys
app = QApplication(sys.argv)
window = Table()
sys.exit(app.exec_())
第一列的每一项都要居中吗
如果要更改复选框的对齐方式,则必须使用QProxyStyle:
相关问题 更多 >
编程相关推荐