我只能在互联网上找到如何循环并获取QListWidget
中的每个项目的任何示例答案 0 :(得分:9)
int count = listWidget->count();
for(int index = 0;
index < count;
index++)
{
QListWidgetItem * item = listWidget->item(index);
// A wild item has appeared
}
我认为foreach
完全不同。
如果您想了解更多相关信息,请查看此内容
http://doc.qt.digia.com/4.2/containers.html#the-foreach-keyword
向下滚动到它谈论foreach
关键字的位置。
特别感谢Tomalak Geret'kal添加了我的键盘无法生成的正确字符:)
由于有这么多的赞成,我也会在这里解释一下foreach宏。
foreach是一个Qt特定的C ++添加,使用预处理器实现。如果要禁用该功能,只需将CONFIG + = no_keywords添加到XX.pro文件中即可。
Qt复制了正在迭代的列表,但不要担心性能问题。 Qt容器使用隐式共享,其中不复制实际内容。将其视为使用相同实际变量的两个参考变量。这样就可以修改迭代的列表,而不会弄乱循环。请注意,修改列表会强制Qt在第一次修改列表时复制列表的实际内容。
foreach可用于遍历所有Qt基本容器,QList QVector QMap QMultiMap等。 QListWidget不是其中之一,所以它不适用于它,遗憾的是。更糟糕的是,QListWidget不提供所有项目的列表,只提供所选项目的列表。有一种叫做项目的方法,看起来不错,但受到保护。
要循环选定的项目,我认为这样可行
foreach(QListWidgetItem * item, listWidget->selectedItems())
{
// A wild item has appeared
}
答案 1 :(得分:1)
“QWidgetList”的first Google result告诉我how to do it。
您可以使用QWidgetListIt
迭代器。
QWidgetList wl = get_some_widget_list();
for (QWidget* w = wl.first(); w != 0; w = wl.next()) {
// use w
}
// or
foreach (QWidget* w, wl) {
// use w
}
我不太确定foreach
来自哪里。如果Qt没有提供它,则可能是一个扩展到BOOST_FOREACH
的宏,您需要包含boost/foreach.hpp
。