7

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

opaqueResizeQSplitter上的这个属性(参见文档)代表什么?

谢谢。

4

1 回答 1

11

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

默认情况下,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()

希望这能让事情更清楚一些。

于 2011-04-07T10:17:13.253 回答