我用Qt设计器制作了一个GUI,我有20个或更多的lineEdit小部件,我正在寻找正确的方法来访问所有这些小部件,而不必访问每个小部件……我用伪代码举例说明:
这是我不想要的:
lineEdit1.setText("Value = 1")
lineEdit2.setText("Value = 2")
lineEdit3.setText("Value = 3")
and so on, up to
lineEdit20.setText("Value = 20")
我在找这样的东西:
for i in xrange(1,21):
lineEdit(i).setText("Value = whatever")
问题是,据我所知,在拖放小部件时,Qt Designer会自动在名称的末尾添加一个数字…lineEdit1,lineEdit2,…因此在此之后,我不知道如何访问代码中的所有小部件。你知道吗
首先,您不必接受Qt Designer中自动指定的名称。只需将
objectName
属性设置为最合适的。你知道吗为了迭代多组小部件,有几种QObject方法可用。你知道吗
最强大的是findChildren,它可以基于类递归地搜索对象/小部件:
还有他们的名字:
但更简单的技术是使用Qt Designer将所有小部件放在容器小部件(如QWidget、QFrame、QGroupBox等)中,然后使用非递归的children方法对它们进行循环:
您可能还想考虑使用QFormLayout,它提供了一种更结构化的做事方式。这在Qt设计器中可用:只需将
Form Layout
拖放到主窗体上,然后使用右键单击菜单中的Add form layout row
向其添加小部件。你知道吗如果您真的想使用QT设计器,我想您最好的解决方案就是简单地将小部件添加到列表中。 我知道这是次优的,但这样你只需要做一次。你知道吗
另一种解决方案是简单地迭代子对象。这是解释here,没有理由重复。你知道吗
相关问题 更多 >
编程相关推荐