我有一个QScrollArea包含一个带有QVBoxLayout的小部件。在这个布局中还有其他几个小部件。我希望用户能够拖动这些小部件的下边框,以垂直方向调整它们的大小。当它们调整大小时,我不想让它们从滚动区域的其他小部件“窃取”大小;相反,我希望整个滚动的“页面”改变其大小。因此,如果您放大其中一个小部件,它应该将其他小部件向下推(从滚动区域的视口中拉出);如果您缩小它,它应该将其他小部件向上拉。拖动一个小部件的边框不应该改变垂直滚动中其他任何小部件的大小;它应该只是移动它们。在
我从使用QSplitter开始。如果我使用它,我可以拖动来改变一个小部件的大小,但是似乎没有办法让它像我上面描述的那样“推/拉”其他部件,而不是增加/缩小它们。但是我找不到任何其他方法来给一个小部件一个可拖动的句柄来允许我改变它的大小。我怎样才能做到这一点?在
这里有一个简单的例子来说明我在做什么。(在本例中,我注释掉了拆分器,但如果取消注释,则可以看到该版本会发生什么。)
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.Qsci import QsciScintilla, QsciLexerPython
class SimplePythonEditor(QsciScintilla):
def __init__(self, parent=None):
super(SimplePythonEditor, self).__init__(parent)
self.setMinimumHeight(50)
class Chunk(QFrame):
def __init__(self, parent=None):
super(Chunk, self).__init__(parent)
layout = QVBoxLayout(self)
sash = QSplitter(self)
layout.addWidget(sash)
sash.setOrientation(Qt.Vertical)
editor = self.editor = SimplePythonEditor()
output = self.output = SimplePythonEditor()
output.setReadOnly(True)
sash.addWidget(editor)
sash.addWidget(output)
self.setLayout(layout)
print(self.sizePolicy())
class Widget(QWidget):
def __init__(self, parent= None):
global inout
super(Widget, self).__init__()
#Container Widget
widget = QWidget()
#Layout of Container Widget
layout = QVBoxLayout(self)
#sash = QSplitter(self)
#layout.addWidget(sash)
#sash.setOrientation(Qt.Vertical)
for num in range(5):
editor = SimplePythonEditor()
editor.setText("Some stuff {}".format(num))
layout.addWidget(editor)
#sash.addWidget(editor)
widget.setLayout(layout)
#Scroll Area Properties
scroll = QScrollArea()
scroll.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
scroll.setWidgetResizable(True)
scroll.setWidget(widget)
scroll.setMaximumHeight(500)
#Scroll Area Layer add
vLayout = QVBoxLayout(self)
vLayout.addWidget(scroll)
self.setLayout(vLayout)
if __name__ == '__main__':
app = QApplication(sys.argv)
dialog = Widget()
dialog.show()
app.exec_()
下面是一个可调整窗口大小的示例代码,当您调整窗口大小时,它会移动和拉伸小部件。这个想法是保持小部件的坐标和大小彼此相对。在
因此,我必须生成一个},我将使用它来运行重新调整函数,该函数重置像so
class Ui_MainWindow
,并为我的窗口类ui2.setupUi(self)
设置它,同时声明{self.resized.connect(self.readjust)
这样的小部件的大小和坐标。在我希望这有帮助!在
相关问题 更多 >
编程相关推荐