PyQt QTableView Mengatur Label Header Horisontal & Vertikal

menggunakan QTableWidget bisa saya lakukan

table = QTableWidget()
table.setHorizontalHeaderLabels(QString("Name;Age;Sex;Add").split(";"))
table.horizontalHeaderItem().setTextAlignment(Qt.AlignHCenter)

bagaimana saya bisa melakukan hal yang sama dengan QTableView ??


person Ruchit    schedule 14.05.2016    source sumber


Jawaban (1)


Widget Tabel/Pohon/Daftar berbasis item. Tampilan Tabel/Pohon/Daftar berbasis Tampilan/Model (terkadang dikenal sebagai MVC, untuk Model/Tampilan/Pengontrol). Dalam sistem Model/Tampilan, data diatur dan dimanipulasi pada model dan tampilan hanya menampilkannya. Untuk menggunakan widget View, Anda juga harus membuat kelas model. Dalam banyak kasus, orang akan membuat sendiri dan subkelasnya dari QAbstractItemModel, namun Anda tidak melakukannya tidak perlu. Qt menyediakan model non-abstrak yang dapat Anda gunakan dengan semua kelas tampilan - QStandardItemModel.

model = QStandardItemModel()
model.setHorizontalHeaderLabels(['Name', 'Age', 'Sex', 'Add'])
table = QTableView()
table.setModel(model)

Ada beberapa cara untuk melakukan penyelarasan. Data penyelarasan sebenarnya didukung dalam model, tetapi tampilan header memungkinkan Anda menyetel default (saya kira ini akan menggunakannya jika data penyelarasan tidak disetel dalam model)

header = table.horizontalHeader()
header.setDefaultAlignment(Qt.AlignHCenter)

Untuk mendapatkan kontrol lebih besar lagi, Anda dapat mengatur data penyelarasan langsung pada model.

# Sets different alignment data just on the first column
model.setHeaderData(0, Qt.Horizontal, Qt.AlignJustify, Qt.TextAlignmentRole)

Namun kekuatan sistem View/Model adalah tampilan dapat memilih untuk menampilkan data dari model apa saja sesuai keinginannya. Jika Anda ingin membuat tampilan kustom Anda sendiri, Anda dapat memiliki kendali penuh atas bagaimana teks di setiap kolom disejajarkan dan ditampilkan.

person Brendan Abel    schedule 14.05.2016