2015-11-30 3 views
0

Я создаю проект для своего класса, и мне нужно поместить scrollArea в виджет (я выбрал сплиттер), и я хочу нажать кнопку и создать в этом виджете больше scrollArea , Это то, что I've сделано:QScrollArea с QWidget в QSplitter

создать кнопку, как это:

self.AddCanal = QAction(QIcon(), "Add channel", self, shortcut = "Shift+Ctrl+c", triggered = self.addChannel) 

И я положил его в QToolBar().

Затем я создаю scrollArea. Я положил 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().

Ну, теперь мне нужно, чтобы кнопка при нажатии на нее создала еще scrollArea в splitter1. И я хочу создать как минимум 5 дополнительных scrollAreas.

Как это сделать?

ответ

0

Решаю это создание метода, как это:

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 в классе

Надеется, что это может помочь кому-то.

Смежные вопросы