如何使用 Python 将小部件添加到 QScrollView



我正在编写一个应用程序,可以动态地向QScrollView添加和删除小部件。下面的代码,使用 Qt3 和 python,会给我动态小部件,但是当我添加太多而看不到时,没有滚动条出现。它尚不可滚动。我将相关的代码段放在下面。

任何答案都必须在Qt3中,因为我的公司只使用Qt3。我是编程和Qt的新手。

PL = parser.Plist()
class EC_Conf_App(QDialog):
def __init__(self,parent = None,name = None,modal = 0,fl = 0):
    QDialog.__init__(self,parent,name,modal,fl)
    self.gridLayout = QGridLayout(self)        
    self.scrollArea = QScrollView(self)        
    self.scrollArea.setGeometry(0, 0, 369, 286)            
    self.Form1Layout = QGridLayout(self.scrollArea)        
    self.gridLayout.addWidget(self.scrollArea, 0, 0)  
    for item in PL.plist:
        self.section_create(item.name, item.variables)
def section_create(self, name, variables):

    # ADD ROW BUTTON 
    for key, value in sorted(variables.iteritems()):
        if len(value) > 3:  # if there is more than one option for the combobox
            self.addButton = QPushButton(self.scrollArea, name + '_AddButton')

            self.addButton.setText('Add Row')
            self.Form1Layout.addWidget(self.addButton, self.Ay, self.Ax)
            self.addButton.show()                
           self.connect(self.addButton,SIGNAL("clicked()"),self.add_rows)
def add_rows(self):
    self.addButton = self.sender()
    self.addButton.name()
    copy_class = self.addButton.name()
    clean_name = copy_class[:-10]
    for item in PL.plist:
        if item.name == clean_name:
            PL.insert(item.name, item.heading, item.variables)
            self.remove_widgets()
            break
def remove_widgets(self):
    for item in self.widgets:
        item.deleteLater()
        self.Form1Layout.remove(item)             
    self.construct()
def construct(self):
    for item in PL.plist:
        self.section_create(item.name, item.variables)

布局与QScrollView一起使用的唯一方法是在其viewport()上设置布局,而不是视图本身。这是有记录的。

self.Form1Layout = QGridLayout(self.scrollArea)替换为

self.Form1Layout = QGridLayout(self.scrollArea.viewport()) 

这个问题涉及Qt4/5的相同问题。

相关内容

  • 没有找到相关文章

最新更新