我要检索名单的人的名字从一排队,对于每个人,将一个框有他们的名字一QGridLayout使用addWidget()function.我可以成功地方项目中的一个QListView,但他们只是写在上面每一个其他的而不是创建一个新行。没有任何人有任何想法怎么解决这个问题?

self.chk_People = QtGui.QListView()
items = self.jobQueue.getPeopleOffQueue()

for item in items:
    QtGui.QCheckBox('%s' % item, self.chk_People)

自我。jobQueue.getPeopleOffQueue()将返回的东西喜欢['Bob','莎莉','Jimmy']如果有帮助。

有帮助吗?

解决方案

此行:

QtGui.QCheckBox('%s' % item, self.chk_People)

不添加复选框列表视图,它只能与列表视图作为父创建它,并有一个很大的区别。

使用一个列表视图的最简单方法是方便QListWidget类。为此,创建复选框为QListWidgetItem的实例,然后使用addItem在列表控件真正将它们添加到它。

你有把它们添加到网格布局的问题吗?通常情况下,如果你有复选框的量小的网格布局可能会更好 - 这一切都取决于你希望你的应用程序的样子。但是,如果你可能有很多这样的对象,则列表控件/视图是最好的。

其他提示

我不能告诉你的解决方案在PyQt但是结构需要遵循如下。该QListView可以做你需要什么,你不需要建立独立的选框。创建一个亚类的 QAbstractItemModelQStandardItemModel (取决于如何很多编码,你会想要做的)复盖 flags() 方法以返回适当的标志 包括 Qt::ItemIsUserCheckable, 在 columncount() 方法中增加一个额外的列以包括框并在 data 方法列在那里你想要你的选择框出现返回的检查状态 Qt::Checked, Qt::UncheckedQt::CheckStateRole.

这也可以通过使用 QListWidget 在这里你可以用 QListWidgetItem 添加数据,并不需要创建一个模型。上 QListWidgetItem 你可以使用 setFlags()setData(QVariant(bool, Qt::CheckStateRole) 没有亚类的模型

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top