عند استخدام واجهة PyQt لتطوير تطبيقات الرسوم البيانية، قد تحتاج في بعض الأحيان إلى تخصيص عناوين الرؤوس الأفقية والرأسية في الجداول الخاصة بك. في هذا السياق، تبدو QTableView هي الخيار المناسب لتحقيق هذا الهدف.
لتعيين عناوين الرأس الأفقي (العمودية) والرأس الرأسي (الأفقية) في QTableView، يمكنك القيام بذلك باستخدام النموذج الخاص بك. سأوضح لك الخطوات بالتفصيل.
أولاً، قم بإنشاء نموذج البيانات الذي سيكون مصدرًا لـ QTableView الخاص بك. يمكنك استخدام QStandardItemModel لهذا الغرض. على سبيل المثال:
pythonfrom PyQt5.QtWidgets import QApplication, QTableView, QStandardItemModel, QHeaderView
from PyQt5.QtCore import Qt
app = QApplication([])
# Create a QStandardItemModel
model = QStandardItemModel()
# Set the horizontal header labels
horizontal_labels = ["Name", "Age", "Sex", "Add"]
model.setHorizontalHeaderLabels(horizontal_labels)
# Set the vertical header labels (optional)
vertical_labels = ["Row 1", "Row 2", "Row 3"]
model.setVerticalHeaderLabels(vertical_labels)
# Populate your data here (you can add rows and columns)
# Create a QTableView and set the model
table_view = QTableView()
table_view.setModel(model)
# Set alignment for horizontal header items
table_view.horizontalHeader().setDefaultAlignment(Qt.AlignHCenter)
# Set alignment for vertical header items (optional)
table_view.verticalHeader().setDefaultAlignment(Qt.AlignVCenter)
# Show the table view
table_view.show()
app.exec_()
في هذا المثال، تم إنشاء نموذج QStandardItemModel وتم تعيين عناوين الرأس الأفقي والرأس الرأسي باستخدام setHorizontalHeaderLabels و setVerticalHeaderLabels على التوالي. يمكنك أيضًا تحديد تنسيق النص في الرؤوس باستخدام setDefaultAlignment.
تأكد من تخصيص البيانات الخاصة بك وإضافتها إلى النموذج حسب احتياجات التطبيق الخاص بك. يمكنك أيضًا تغيير تنسيق الرأس والخلايا حسب الحاجة. هذا يوفر لك التحكم الكامل في مظهر QTableView الخاص بك.
المزيد من المعلومات
بالتأكيد، دعني أقدم لك مزيد من المعلومات حول كيفية تخصيص QTableView في PyQt وإدارة المزيد من السمات المهمة.
إضافة بيانات إلى الجدول:
بعد تعيين عناوين الرأس، يمكنك إضافة البيانات إلى النموذج باستخدام QStandardItem. على سبيل المثال، يمكنك إضافة صفوف كالتالي:
python# Create QStandardItem for each cell
item_name = QStandardItem("John")
item_age = QStandardItem("25")
item_sex = QStandardItem("Male")
item_add = QStandardItem("123 Main St.")
# Add items to the model
model.appendRow([item_name, item_age, item_sex, item_add])
تخصيص خصائص العرض:
يمكنك تخصيص خصائص العرض للجدول، مثل حجم الخلية، لون الخلفية، والخط. على سبيل المثال:
python# Set font for the entire table
font = table_view.font()
font.setBold(True)
table_view.setFont(font)
# Set background color for header
header_palette = table_view.horizontalHeader().palette()
header_palette.setColor(QPalette.Window, Qt.lightGray)
table_view.horizontalHeader().setPalette(header_palette)
# Set background color for cells
table_view.setStyleSheet("QTableView { background-color: #f0f0f0; }")
التفاعل مع الحدث:
يمكنك أيضًا إضافة التفاعل مع الحدث إلى QTableView، على سبيل المثال، استجابة عند النقر على خلية معينة:
pythondef cell_clicked(index):
print("Cell Clicked:", index.row(), index.column())
# Connect the clicked signal to the function
table_view.clicked.connect(cell_clicked)
تغيير حجم الخلية:
يمكنك تحديد حجم الخلية بشكل مباشر عن طريق تعيين عرض وارتفاع الخلية باستخدام setRowHeight
و setColumnWidth
:
python# Set height for a specific row
table_view.verticalHeader().setSectionResizeMode(QHeaderView.Fixed)
table_view.verticalHeader().setDefaultSectionSize(30) # Set height in pixels
# Set width for a specific column
table_view.horizontalHeader().setSectionResizeMode(0, QHeaderView.Fixed)
table_view.setColumnWidth(0, 150) # Set width in pixels
هذه بعض النقاط التي يمكنك استكشافها لتخصيص QTableView في PyQt بطريقة أكثر شمولًا. يجب عليك تكييف هذه الأمثلة وفقًا لاحتياجات تطبيقك الخاص.