在 QSplitter 中带有 QWidget 的 QScrollArea
Posted
技术标签:
【中文标题】在 QSplitter 中带有 QWidget 的 QScrollArea【英文标题】:QScrollArea with a QWidget in a QSplitter 【发布时间】:2015-11-30 17:17:33 【问题描述】:我正在为我的班级制作一个项目,我需要在一个小部件中放置一个 scrollArea
(我选择了一个拆分器),我想按下一个按钮并在这个小部件中创建更多 scrollArea
。这就是我所做的:
我这样创建按钮:
self.AddCanal = QAction(QIcon(), "Add channel", self, shortcut = "Shift+Ctrl+c", triggered = self.addChannel)
我把它放在QToolBar()
。
然后,我创建了scrollArea
。我将带有Qwidget
的滚动区域(在这种情况下我使用QwtPlot
)放在QSplitter
(splitter1
)中,然后我将一个框架和分离器放在另一个分离器(splitter2
)中。最后,我将splitter2
和另一帧放入最后一个拆分器(splitter3
)。你可以在这里看到它:
self.scrollLayout = QFormLayout()
self.canal = QwtPlot()
self.canal.setLayout(self.scrollLayout)
self.scrollArea = QScrollArea()
self.scrollArea.setWidgetResizable(True)
self.scrollArea.setWidget(self.canal)
self.scrollArea = QScrollArea()
self.scrollArea.setWidgetResizable(True)
self.scrollArea.setWidget(self.canal)
splitter2 = QSplitter(Qt.Horizontal)
splitter2.addWidget(self.frame)
splitter2.addWidget(splitter1)
splitter3 = QSplitter(Qt.Vertical)
splitter3.addWidget(splitter2)
splitter3.addWidget(self.frame_3)
我是这样做的,因为我会在一个框架中放置一个树小部件,而在底部框架中我将放置一个QtextEdit()
。
好吧,现在我需要该按钮,当单击它时,会在 splitter1
中创建另一个 scrollArea
。我想创建至少 5 个额外的scrollAreas
。
我怎样才能做到这一点?
【问题讨论】:
【参考方案1】:我通过创建这样的方法来解决它:
def addChannel(self):
global channelCount
self.scrollLayout = QFormLayout()
self.canal = QwtPlot()
self.canal.setLayout(self.scrollLayout)
self.scrollArea = QScrollArea()
self.scrollArea.setWidgetResizable(True)
self.scrollArea.setWidget(self.canal)
if channelCount <= 5:
self.splitter1.addWidget(self.scrollArea)
channelCount += 1
return channelCount
使用“channelCount”作为全局变量,从 1 开始,只是因为我只想要 5。
我补充一下:
self.addchannel()
QMainWindow
班级
希望它可以帮助某人。
【讨论】:
以上是关于在 QSplitter 中带有 QWidget 的 QScrollArea的主要内容,如果未能解决你的问题,请参考以下文章