我正在尝试强制QTextEdit
窗口小部件跨越QGridLayout
的整个单元格。
我尝试了QSizePolicy
和sizeHint()
的许多不同组合,但没有任何效果。
在下面的示例中,我有一个最小尺寸800x600的主要小部件和另一个小部件'蓝色'第1列中的大小为100x100。所以我希望第0列中的QTextEdit
为700x600。
一般来说,我想要'编辑'如果我的主窗口小部件被调整为nxm,则为(n - blue.width()
)xm。
import sys
from PyQt5 import QtWidgets, QtCore
if __name__ == '__main__':
qApp = QtWidgets.QApplication(sys.argv)
mainWidget = QtWidgets.QWidget()
mainWidget.setMinimumSize(800, 600)
mainLayout = QtWidgets.QGridLayout(mainWidget)
blue = QtWidgets.QWidget(mainWidget)
blue.setStyleSheet('background-color: blue')
blue.setFixedSize(100, 100)
edit = QtWidgets.QTextEdit(mainWidget)
### what to do here?
policy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding,
QtWidgets.QSizePolicy.Expanding)
edit.setSizePolicy(policy)
###
mainLayout.addWidget(edit, 0, 0, 1, 1, QtCore.Qt.AlignCenter)
mainLayout.addWidget(blue, 0, 1, 1, 1, QtCore.Qt.AlignCenter)
mainLayout.setColumnStretch(0, 1)
mainLayout.setColumnStretch(1, 0)
mainWidget.setLayout(mainLayout)
mainWidget.show()
sys.exit(qApp.exec_())
答案 0 :(得分:0)
我认为你只是在QGridLayout
上设置了太多限制。尝试使用...添加小部件到布局
mainLayout.addWidget(edit, 0, 0)
mainLayout.addWidget(blue, 0, 1)
此外,您可能不需要明确设置大小调整策略 - 它应该正常工作 (它适用于我)。
完整的,最小的工作示例将是......
import sys
from PyQt5 import QtWidgets, QtCore
if __name__ == '__main__':
qApp = QtWidgets.QApplication(sys.argv)
mainWidget = QtWidgets.QWidget()
mainWidget.setMinimumSize(800, 600)
mainLayout = QtWidgets.QGridLayout(mainWidget)
blue = QtWidgets.QWidget(mainWidget)
blue.setStyleSheet('background-color: blue')
blue.setFixedSize(100, 100)
edit = QtWidgets.QTextEdit(mainWidget)
mainLayout.addWidget(edit, 0, 0)
mainLayout.addWidget(blue, 0, 1)
mainWidget.show()
sys.exit(qApp.exec_())