2024-04-23 22:22:06 发布
网友
情况是这样的。我有一个类,它是从QListView派生出来的,它添加了一些方便的函数,如果您愿意,它是一个自定义小部件。我不想为了使用我的widget而与设计师角力。我只想在设计器中使用一个普通的QlistView(作为占位符)并用pyuic4编译它。在运行时,我想用我自己的版本替换普通的QListView。在
你怎么能这么做?在
我希望init中类似这样的东西能起作用:
self.lstView1 = MyListView
但它没有。。。在
问题是您实际上只是简单地替换lstView1所指向的对象,而不是将其添加到小部件中。也就是说,当您创建对象时,只需告诉python使用lstView1指向新对象,但实际的UI使用的是旧指针,因为它已经添加了。在
我假设您已经使用py4uci将ui文件转换为python,并将gui设置为:
class ExambleUI(QtGUi.QDialog, UI_Example): def __init__(self, parent): QtGui.QDiialog.__init__(self, parent) self.setupUI(self) self.lstView1 = MyListView
因为setupUi是在您更改lstView的值之前执行的,所以您无法获得新的小部件。你只需要换行:
另一方面,我建议您遵循这个tutorial并在设计器中创建和使用您的widget,它既简单又快速。在
使用QLayout replace函数:
ui->main_layout->replace(oldWidget, newWidget);
问题是您实际上只是简单地替换lstView1所指向的对象,而不是将其添加到小部件中。也就是说,当您创建对象时,只需告诉python使用lstView1指向新对象,但实际的UI使用的是旧指针,因为它已经添加了。在
我假设您已经使用py4uci将ui文件转换为python,并将gui设置为:
因为setupUi是在您更改lstView的值之前执行的,所以您无法获得新的小部件。你只需要换行:
^{pr2}$另一方面,我建议您遵循这个tutorial并在设计器中创建和使用您的widget,它既简单又快速。在
使用QLayout replace函数:
相关问题 更多 >
编程相关推荐