Свойство Qt opaqueresize для значения QSplitter - PullRequest
7 голосов
/ 07 апреля 2011

Я не нашел этого в Интернете ...

Что означает это свойство opaqueResize в QSplitter ( см. Документ )?

Спасибо.

1 Ответ

10 голосов
/ 07 апреля 2011

Я не совсем уверен, что вы спрашиваете здесь.Это все в документах .

QSplitter изменяет размеры своих потомков по умолчанию динамически.Если вы предпочитаете, чтобы QSplitter изменял размер дочерних элементов только в конце операции изменения размера, вызовите setOpaqueResize (false)

Значение, если вы установили setOpaqueResize(false) на свой сплиттер, запустите ваше приложение и попытайтесь вытянутьразделитель для изменения размера виджетов, которые он содержит, фактически не изменит размер виджетов, пока вы не отпустите разделитель.С другой стороны, если он установлен на true, он будет пытаться изменить размеры виджетов, пока вы перетаскиваете маркер сплиттера.

Может быть полезно отключить эту функцию, если ваши пользовательские виджеты занимают много времени длярисовать, например, так как это приведет к довольно медленному изменению размера.

Но чтобы ответить на ваш вопрос, свойство opaqueResize содержит информацию о том, является ли изменение размера непрозрачным или нет, то есть будет ли оно изменять размеры виджетов при перетаскивании сплиттера или нет.


Пример:

Вот пример PyQt, который вы можете попробовать (у меня был пример на Python, но он должен работать так же в C ++):

from PyQt4 import QtGui, QtCore

class Example(QtGui.QWidget):
    def __init__(self, *args, **kwargs):
        super(Example, self).__init__(*args, **kwargs)
        top = QtGui.QLabel('test', self)
        bottom = QtGui.QPushButton('test', self)
        splitter = QtGui.QSplitter(QtCore.Qt.Vertical)
        # Try changing from False to True
        splitter.setOpaqueResize(False)
        splitter.addWidget(top)
        splitter.addWidget(bottom)
        hbox = QtGui.QHBoxLayout(self)
        hbox.addWidget(splitter)
        self.setLayout(hbox)
        self.setGeometry(250, 200, 350, 250)

def main():
    app = QtGui.QApplication([])
    ex = Example()
    ex.show()
    app.exec_()

if __name__ == '__main__':
    main()

Надеюсь, это немного прояснит ситуацию.

...