【发布时间】:2019-06-29 11:03:49
【问题描述】:
我正在尝试创建一个布局,其中存在一行,并且该行应包含一个绝对定位的按钮,该按钮应放置在该行之外。
这是简单的模式
我只是将一个子按钮推入父按钮(我不确定这是一个正确的解决方案)并将其移动到某个绝对坐标。
它可以工作,但不幸的是,子按钮被父按钮剪裁。所以它就像 CSS 中的overflow: hidden。但在 QT 的情况下,我找不到如何禁用此行为。
这是我当前 QUI 的演示
有什么办法可以解决吗?还是我应该只使用一些小部件与空白垫片等组合?
btn = QPushButton("button")
test = QPushButton("X")
test.setParent(btn)
test.move(200, 5)
self.layout.addWidget(btn)
UI 类的完整代码(最小可重现示例)
class MainWindow(QWidget):
def __init__(self):
super(MainWindow, self).__init__()
self.layout = QVBoxLayout()
btn = QPushButton("button")
test = QPushButton("X")
test.setParent(btn)
test.move(200, 5)
self.layout.addWidget(btn)
self.setLayout(self.layout)
self.layout.setContentsMargins(0,0,0,74)
self.layout.setSpacing(0)
# self.layout.addStretch(-1)
self.setMinimumSize(640,400)
self.setWindowFlags(Qt.FramelessWindowHint)
【问题讨论】:
-
您可以尝试使用
QGridLayout并将所有大按钮放在第一列,将两个较小的按钮放在第二列。 -
S.缺口。添加了一个最小的可重现示例。希望它对@Heike有所帮助 - 感谢您的建议,但我想知道是否有任何其他方法可以防止绝对 btn 剪辑?
-
@Velidan 我认为您不能在父小部件的边界之外绘制子小部件。要完全绘制
test,您可以增加btn的最小高度,使test完全落在btn的边界内。否则,您可以通过将btn和test都添加到另一个小部件来创建它们。 -
是的,我明白了。遗憾的是,我认为这可能就像在 css 的情况下一样。谢谢
标签: python pyqt qwidget qlayout