Qt在QSplitter上的opaqueresize属性意义

moa*_*ala 7 qt qsplitter

我没有在网上找到这个......

opaqueResizeQSplitter 上的这个属性(见doc)代表什么?

谢谢.

Dav*_*cic 10

我不确定你在这里问什么.一切都在文档中.

默认情况下,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()
Run Code Online (Sandbox Code Playgroud)

希望这会让事情变得更加清晰.