gpt4 book ai didi

python - 单元格编辑期间 QTableWidgetItem 中的居中文本

转载 作者:太空宇宙 更新时间:2023-11-04 02:31:52 27 4
gpt4 key购买 nike

以下 PyQt4 示例演示了我的问题。 QTableWidget 单元格中的文本很好地居中,直到您编辑单元格。当您编辑单元格时,文本左对齐。

我想在每个单元格的编辑过程中保持居中对齐。

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

class MainWindow(QtGui.QWidget):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)

self.table = QtGui.QTableWidget(parent=self)
self.table.setEditTriggers(QtGui.QAbstractItemView.AllEditTriggers)
self.table.setColumnCount(2)
self.table.setRowCount(2)
self.table.setHorizontalHeaderLabels(['col1','col2'])
self.table.setVerticalHeaderLabels(['row1','row2'])

item = QtGui.QTableWidgetItem('x')
item.setFlags(Qt.NoItemFlags | Qt.ItemIsEditable | Qt.ItemIsEnabled | Qt.ItemIsSelectable)
item.setTextAlignment(Qt.AlignHCenter|Qt.AlignVCenter|Qt.AlignCenter)
self.table.setItem(0, 0, item)

item = QtGui.QTableWidgetItem('x')
item.setFlags(Qt.NoItemFlags | Qt.ItemIsEditable | Qt.ItemIsEnabled | Qt.ItemIsSelectable)
item.setTextAlignment(Qt.AlignHCenter|Qt.AlignVCenter|Qt.AlignCenter)
self.table.setItem(0, 1, item)

item = QtGui.QTableWidgetItem('x')
item.setFlags(Qt.NoItemFlags | Qt.ItemIsEditable | Qt.ItemIsEnabled | Qt.ItemIsSelectable)
item.setTextAlignment(Qt.AlignHCenter|Qt.AlignVCenter|Qt.AlignCenter)
self.table.setItem(1, 0, item)

item = QtGui.QTableWidgetItem('x')
item.setFlags(Qt.NoItemFlags | Qt.ItemIsEditable | Qt.ItemIsEnabled | Qt.ItemIsSelectable)
item.setTextAlignment(Qt.AlignHCenter|Qt.AlignVCenter|Qt.AlignCenter)
self.table.setItem(1, 1, item)

layout = QtGui.QGridLayout()
layout.addWidget(self.table, 1, 0)
self.setLayout(layout)

################################################################

if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
app.setStyle("Plastique") # set style
myapp = MainWindow() # instantiate the main window
myapp.show() # show the main window
rc = app.exec_()
myapp.close()
sys.exit(rc) # exit with the same return code of Qt application

最佳答案

一个可能的解决方案是实现一个委托(delegate):

class CenterDelegate(QStyledItemDelegate):
def createEditor(self, parent, option, index):
editor = QStyledItemDelegate.createEditor(self, parent, option, index)
editor.setAlignment(Qt.AlignCenter)
return editor

然后将它设置为 QTableWidget:

self.table = QtGui.QTableWidget(parent=self)
delegate = CenterDelegate()
self.table.setItemDelegate(delegate)

enter image description here

关于python - 单元格编辑期间 QTableWidgetItem 中的居中文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48997764/

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