pyqt QTabWidget setCornerWidget TopRightCorner - PullRequest
       23

pyqt QTabWidget setCornerWidget TopRightCorner

0 голосов
/ 27 февраля 2020

У меня есть QTabWidget и я добавляю метку набора в его верхний правый угол. Когда я устанавливаю ширину и высоту метки, ее граница пересекает добавленную мной вкладку «а». Я хочу установить ширину и высоту lalel. Не пересекайте вкладку «а», которую я добавил, как мне установить

from PyQt4.QtCore import Qt
from PyQt4.QtGui import QTabWidget, QLabel
import sys
from PyQt4 import QtGui


class Setting(QLabel):
    def __init__(self):
        super(Setting, self).__init__()
        self.setText('setting')
        self.setStyleSheet("""*{border-width: 1px;
                                 border-style: solid;
                                 border-color: red;}""")
        self.setFixedSize(30, 40)


class Example(QtGui.QWidget):

    def __init__(self):
        super(Example, self).__init__()

        self.initUI()

    def create_tab(self):
        self.tab = QTabWidget()
        self.tab.addTab(QLabel('a'), 'a')
        self.tab.setCornerWidget(Setting(), Qt.TopRightCorner)

    def initUI(self):
        self.create_tab()

        h = QtGui.QHBoxLayout()
        self.setLayout(h)
        h.addWidget(self.tab)
        self.setGeometry(100, 100, 500, 500)
        self.show()


def main():
    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

1 Ответ

0 голосов
/ 27 февраля 2020

Если вы удалите setFixedSize() из вашей метки, вы можете контролировать размер и положение с помощью таблицы стилей в QTabWidget, задав для цели ::right-corner.

class Example(QtGui.QWidget):

    def __init__(self):
        super(Example, self).__init__()
        self.initUI()

    def create_tab(self):
        self.tab = QTabWidget()
        self.tab.setStyleSheet('''
        QTabWidget::right-corner {
            width: 60px;
            height: 25px;
            subcontrol-position: left bottom;
        }''')
        self.tab.addTab(QLabel('a'), 'a')
        self.tab.setCornerWidget(Setting(), Qt.TopRightCorner)

вместо subcontrol-position Вы также можете использовать top, bottom, left и right со значениями пикселей для перемещения элемента управления.

...