QGridLayout يزيل التباعد
سؤال
انا املك QTableWidget
و 6 QPushBotton
أريد أن أضعهم في تخطيط بهذه الطريقة
مجرد مسافة صغيرة بين Bottons
لكن باستخدام QGridLayout
جعلها تبدو مثل هذا
شفرة:
tab_Memory_layout = QtGui.QGridLayout()
tab_Memory_layout.setVerticalSpacing(0)
tab_Memory_layout.setAlignment(QtCore.Qt.AlignTop)
tab_Memory_layout.addWidget(self.MemoryTable, 0, 0)
tab_Memory_buttons = QtGui.QGridLayout()
tab_Memory_buttons.setSpacing(5)
tab_Memory_buttons.addWidget(self.pushButton_add_memory, 0, 0, QtCore.Qt.AlignTop)
tab_Memory_buttons.addWidget(self.pushButton_up_memory, 1, 0, QtCore.Qt.AlignTop)
tab_Memory_buttons.addWidget(self.pushButton_down_memory, 2, 0, QtCore.Qt.AlignTop)
tab_Memory_buttons.addWidget(self.pushButton_top_memory, 3, 0, QtCore.Qt.AlignTop)
tab_Memory_buttons.addWidget(self.pushButton_bottom_memory, 4, 0, QtCore.Qt.AlignTop)
tab_Memory_buttons.addWidget(self.pushButton_delete_memory, 5, 0, QtCore.Qt.AlignTop)
tab_Memory_layout.addLayout(tab_Memory_buttons, 0, 1)
self.tab_Memory.setLayout(tab_Memory_layout)
حاولت setRowStretch(i, 0), setVerticalSpacing(0)
لكنه لم يساعد!
أنا أيضا استخدمت QGridLayout
و QVBoxLayout
بالنسبة لمجموعة Bottons، فهي تعمل ولكن يتم محاذاة جميع الأزرار في الأسفل، على الرغم من أنني استخدمتها AlignTop
لكل عنصر وللتخطيط
المحلول
تحتاج فقط إلى إضافة أ فاصل في التخطيط الخاص بك:
ال QSpacerItem يوفر الفصل مساحة فارغة في التخطيط.
verticalSpacer = QSpacerItem(40, 20, QSizePolicy.Minimum, QSizePolicy.Expanding)
tab_Memory_buttons.addItem(verticalSpacer, 6, 0, QtCore.Qt.AlignTop)
سيتم "امتصاص" أي مساحة إضافية في المخطط بواسطة المباعد، مما سيحافظ على محاذاة الأدوات الأخرى.
نصائح أخرى
أضف Qlabel("") أسفل زر الحذف.وهذا يجعلهم مثل الطريقة التي تريدها.
لا تنتمي إلى StackOverflow