و دستورات به شکل زیر هستند:
rows = cursor.execute("""
SELECT shenase, fname || ' ' || lname AS full_name,
join_date,membership_fee FROM users;
""").fetchall()
for i, row in enumerate(rows):
for j, field in enumerate(row):
item = QTableWidgetItem(str(field))
self.tableWidget.setItem(i, j, item)
if j == 3:
layout = QHBoxLayout()
layout.setContentsMargins(0,0,0,0)
layout.setSpacing(0
layout.addWidget(QPushButton('Edit'))
layout.addWidget(QPushButton('Delete'))
layout.addWidget(QPushButton('View'))
cellWidget = QWidget()
cellWidget.setLayout(layout)
self.tableWidget.setCellWidget(i, 4, cellWidget)
خب یک توضیح کوچکی درباره کدها بدم:
خط ۱ تا ۴ از جدول users که در پایگاه داده sqlite ساختمش، اطلاعات کل اعضا رو میگیرم و در متغیر rows ذخیره میکنم.
خط ۶ برای نمایش ردیفهاست.
خط ۷ برای نمایش فیلدهای (سلول) هر ردیف هست.
خط ۸ و ۹ برای قراردادن محتوای هر فیلد هست.
خط ۱۰ تا ۲۰ برای نمایش فیلد چهارم هر ردیف هست که داخل هر فیلد ۳ دکمه از نوع QPushButton در نظر گرفتم برای Edit, View, Delete. یعنی ابتدا یک لایه افقی QHBoxLayout در نظر گرفتم و سپس این ۳ دکمه رو بهش اضافه کردم و در نهایت این لایه رو به عنوان یک ویجت به سلول مورد نظرم اضافه کردم.
لازمه که ذکر کنم، از اونجایی که متد .setCellWidget()
فقط یک ویجت رو به عنوان ورودی میپذیره! پس من مجبورم برای افزودن ۳ دکمه که ۳ ویجت محسوب میشن، این ۳ تا رو درون یک ویجت (مثل QHBoxLayout) بزارم و در نهایت اون یک ویجت (QHboxLayout) رو بهش بدم.
اگر سوالی دارین از قسمت نظرات در پایین همین نوشته بپرسید تا جای ممکن که در توانم باشه پاسخ میدم.