Qt的opaqueresize属性对QSplitter的意义

发布于 2024-10-30 14:31:09 字数 178 浏览 6 评论 0原文

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

QSplitter 上的这个 opaqueResize 属性是什么意思(参见文档) 代表什么?

谢谢。

I didn't find this on the web...

What does this opaqueResize property on QSplitter (see doc) stand for?

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

这个俗人 2024-11-06 14:31:09

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

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()

希望这能让事情变得更清晰一些。

I am not really sure what you are asking here. It's all in the docs.

QSplitter resizes its children
dynamically by default. If you would
rather have QSplitter resize the
children only at the end of a resize
operation, call setOpaqueResize(false)

Meaning if you set setOpaqueResize(false) on your splitter, start your application and try to pull the splitter to resize the widgets it holds it will not actually resize widgets until you release the splitter. On the other hand if it is set to true it will try to resize the widgets while you are dragging the splitter handle.

It can be useful to turn this feature off if your custom widgets take long time to draw for example since it would make resizing quite slow.

But to answer your question, property opaqueResize holds whether resizing is opaque or not, i.e. will it resize the widgets while dragging the splitter or not.


Example:

Here is a PyQt example you can try (I had example laying around in Python, but it should work the same in 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()

Hope this makes things a bit clearer.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文