Qt中QSplitter的opaqueresize属性的含义是什么?

7

我在网络上找不到这个信息...

opaqueResize 属性在 QSplitter(请参阅文档)中是什么意思?

谢谢。

1个回答

12

我不确定你在这里想问什么。所有的内容都在文档中。

默认情况下,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()
希望这能让事情更清晰一些。

好的解释。在其他框架中,它可能被称为实时调整大小。 - Stephen Chu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接