ใช้ QTableWidget ฉันทำได้
table = QTableWidget()
table.setHorizontalHeaderLabels(QString("Name;Age;Sex;Add").split(";"))
table.horizontalHeaderItem().setTextAlignment(Qt.AlignHCenter)
ฉันจะทำเช่นเดียวกันกับ QTableView ได้อย่างไร ??
ใช้ QTableWidget ฉันทำได้
table = QTableWidget()
table.setHorizontalHeaderLabels(QString("Name;Age;Sex;Add").split(";"))
table.horizontalHeaderItem().setTextAlignment(Qt.AlignHCenter)
ฉันจะทำเช่นเดียวกันกับ QTableView ได้อย่างไร ??
วิดเจ็ตตาราง/ทรี/รายการเป็นแบบอิงตามรายการ มุมมองตาราง/ทรี/รายการเป็นไปตามมุมมอง/โมเดล (บางครั้งเรียกว่า MVC สำหรับโมเดล/มุมมอง/ตัวควบคุม) ในระบบ Model/View ข้อมูลจะถูกตั้งค่าและจัดการบนโมเดล และมุมมองจะแสดงข้อมูลนั้นเท่านั้น หากต้องการใช้วิดเจ็ต View คุณต้องสร้างคลาสโมเดลด้วย ในหลายกรณี ผู้คนจะสร้างคลาสของตนเองและคลาสย่อยจาก QAbstractItemModel
แต่คุณไม่ต้องการ ไม่ต้อง Qt มีโมเดลที่ไม่ใช่นามธรรมที่คุณสามารถใช้ได้กับคลาสมุมมองทั้งหมด - QStandardItemModel
ก>
model = QStandardItemModel()
model.setHorizontalHeaderLabels(['Name', 'Age', 'Sex', 'Add'])
table = QTableView()
table.setModel(model)
มีสองวิธีที่คุณสามารถจัดตำแหน่งได้ ข้อมูลการจัดตำแหน่งได้รับการสนับสนุนจริง ๆ ในโมเดล แต่มุมมองส่วนหัวช่วยให้คุณตั้งค่าเริ่มต้นได้ (ฉันเดาว่าจะใช้สิ่งนั้นหากไม่ได้ตั้งค่าข้อมูลการจัดตำแหน่งในโมเดล)
header = table.horizontalHeader()
header.setDefaultAlignment(Qt.AlignHCenter)
เพื่อให้สามารถควบคุมได้มากขึ้น คุณสามารถตั้งค่าข้อมูลการจัดตำแหน่งบนโมเดลได้โดยตรง
# Sets different alignment data just on the first column
model.setHeaderData(0, Qt.Horizontal, Qt.AlignJustify, Qt.TextAlignmentRole)
แต่พลังของระบบ View/Model ก็คือ มุมมองสามารถเลือกที่จะแสดงข้อมูลนั้นจากโมเดล ใดก็ได้ ในแบบที่ต้องการ หากคุณต้องการสร้างมุมมองที่กำหนดเอง คุณสามารถควบคุมวิธีจัดแนวและแสดงข้อความในแต่ละคอลัมน์ได้อย่างสมบูรณ์