سؤال

انا املك QTableWidget و 6 QPushBotton أريد أن أضعهم في تخطيط بهذه الطريقة

enter image description here

مجرد مسافة صغيرة بين Bottons

لكن باستخدام QGridLayout جعلها تبدو مثل هذا

enter image description here

شفرة:

    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 لكل عنصر وللتخطيط

هل كانت مفيدة؟

المحلول

تحتاج فقط إلى إضافة أ فاصل في التخطيط الخاص بك:

enter image description here

ال QSpacerItem يوفر الفصل مساحة فارغة في التخطيط.

verticalSpacer = QSpacerItem(40, 20, QSizePolicy.Minimum, QSizePolicy.Expanding)
tab_Memory_buttons.addItem(verticalSpacer, 6, 0, QtCore.Qt.AlignTop)

سيتم "امتصاص" أي مساحة إضافية في المخطط بواسطة المباعد، مما سيحافظ على محاذاة الأدوات الأخرى.

نصائح أخرى

أضف Qlabel("") أسفل زر الحذف.وهذا يجعلهم مثل الطريقة التي تريدها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top