如何解决如何在PyQt5表格视图中将数据库导出的值与查询对齐
我有以下问题。
我有一个非常简单的代码,该代码正在连接到本地sql数据库,并从那里导出带有查询的数据集。然后,我在PyQT表小部件中显示这些数据,仅此而已。
问题是我无法将数据与列中心对齐。当前,所有内容都向左对齐。
我尝试对Qt.AlignCenter
使用不同的组合,但无法使其正常工作。
这是我的代码
import os
from PyQt5 import QtCore,QtGui,QtWidgets,QtSql
class BlobDelegate(QtWidgets.QStyledItemDelegate):
def displayText(self,value,locale):
if isinstance(value,QtCore.QByteArray):
value = value.data().decode()
return super(BlobDelegate,self).displayText(value,locale)
def createConnection():
db = QtSql.QSqlDatabase.addDatabase("QSQLITE")
file = os.path.join(os.path.dirname(os.path.realpath(__file__)),"stats.db")
db.setDatabaseName(file)
if not db.open():
QtWidgets.QMessageBox.critical(
None,QtWidgets.qApp.tr("Cannot open database"),QtWidgets.qApp.tr(
"Unable to establish a database connection.\n"
"This example needs SQLite support. Please read "
"the Qt SQL driver documentation for information "
"how to build it.\n\n"
"Click Cancel to exit."
),QtWidgets.QMessageBox.Cancel)
return False
return True
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
if not createConnection():
sys.exit(-1)
w = QtWidgets.QTableView()
w.setFont(QtGui.QFont('Arial',18))
w.horizontalHeader().setStretchLastSection(False)
w.horizontalHeader().setFixedHeight(40)
w.horizontalHeader().setSectionResizeMode(QtWidgets.QHeaderView.Stretch)
# w.horizontalHeader().setSectionResizeMode(QtWidgets.QHeaderView.ResizeToContents)
w.setWordWrap(True)
delegate = BlobDelegate(w)
w.setItemDelegateForColumn(4,delegate)
model = QtSql.QSqlQueryModel()
model.setQuery("SELECT * FROM table_tennis_statistics")
w.setModel(model)
w.resize(1024,600)
w.show()
sys.exit(app.exec_())
屏幕截图
解决方法
您必须修改displayAlignment
的{{1}}属性,并将委托应用于所有列:
QStyleOptionViewItem
class BlobDelegate(QtWidgets.QStyledItemDelegate):
def initStyleOption(self,option,index):
super(BlobDelegate,self).initStyleOption(option,index)
option.displayAlignment = QtCore.Qt.AlignCenter
def displayText(self,value,locale):
if isinstance(value,QtCore.QByteArray):
value = value.data().decode()
return super(BlobDelegate,self).displayText(value,locale)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。