我已经在Qt设计器中创建了一个表。在表的第2列中,我希望用户输入的内容只能是大写字母。怎么做呢?
在这里,我无法理解此处可以使用QTableWidget或QTableWidgetItem的哪个实用程序?
答案 0 :(得分:1)
您可以使用委托来修改用户输入:
from PyQt5 import QtCore, QtGui, QtWidgets
class UpperDelegate(QtWidgets.QStyledItemDelegate):
def createEditor(self, parent, index, option):
editor = super(UpperDelegate, self).createEditor(parent, index, option)
font = QtGui.QFont(editor.font())
font.setCapitalization(QtGui.QFont.AllUppercase)
editor.setFont(font)
return editor
"""def initStyleOption(self, option, index):
super(UpperDelegate, self).initStyleOption(option, index)
font = QtGui.QFont(option.font)
font.setCapitalization(QtGui.QFont.AllUppercase)
option.font = font"""
def setModelData(self, editor, model, index):
text = editor.property("text")
if isinstance(text, str):
editor.setProperty("text", text.upper())
super(UpperDelegate, self).setModelData(editor, model, index)
# model.setData(index, editor.text().upper(), QtCore.Qt.DisplayRole)
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
w = QtWidgets.QTableWidget(10, 4)
delegate = UpperDelegate(w)
w.setItemDelegateForColumn(1, delegate)
w.show()
sys.exit(app.exec_())