如何迭代QListWidget项并处理每个项
How can I iterate through QListWidget items and work with each item?
在CSharp中,它就像编写一样简单
listBox1.Items.Add("Hello");
listBox1.Items.Add("There");
foreach (string item in listBox1.Items )
{
MessageBox.Show(item.ToString());
}
我可以很容易地将不同的对象添加到列表框中,然后使用foreach检索它们。
我在问题4.8.2中尝试了相同的方法,但它们似乎不同。尽管他们一开始看起来很相似。我发现Qt支持foreach,所以我继续尝试了一些类似的东西:
foreach(QListWidgetItem& item,ui->listWidget->items())
{
item.setTextColor(QColor::blue());
}
这显然失败了。它说items()需要一个参数,这让我很困惑。我正在尝试遍历ListBox本身,这意味着什么?我尝试将ListBox对象作为参数本身传递,但再次失败:
foreach(QListWidgetItem& item,ui->listWidget->items(ui->listWidget))
{
item.setTextColor(QColor::blue());
}
以下是我的问题:
- 如何在Qt中迭代QListWidget项
- 我可以像C#一样将对象作为项目存储在QListWidgets中吗
- 如何将QListWidgets中的对象转换为字符串(Qt中的C#ToString计数器部分)
(假设我想使用QMessageBox而不是setTextColor,并想打印出QlistWidget中的所有字符串项。)
我不认为items函数能做你认为它能做的事情。这听起来像是用于解码MIME数据,而不是获取小部件中所有项目的列表。
遗憾的是,我实际上看不到任何功能可以完全按照你的意愿进行。你可能会使用findItems作为一种变通方法,但这似乎很丑陋,如果不是彻头彻尾的滥用。。。至少你仍然可以将item函数与好的旧for
循环一起使用——它们不是,更多的类型:
for(int i = 0; i < listWidget->count(); ++i)
{
QListWidgetItem* item = listWidget->item(i);
//Do stuff!
}
希望能有所帮助!
您可以这样做:
for(int i = 0; i < listWidget->count(); ++i)
{
QString str = listwidget.item(i)->text();
//Do stuff!
}
如果您在代码中创建列表项,请尝试为每个项创建一个指针。但是,如果您正在使用.ui文件制作列表项,请尝试右键单击它并点击编辑样式表。这样你可以很容易地编辑它。
相关文章:
- 警告处理为错误这里有什么问题
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 处理多个异常集合的C++方法
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 使用流处理接收到的数据
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 基于多个条件处理地图中的所有元素
- 如何用数字处理log(0)
- SSL上的`curl_easy_send`和`curl_asy_recv`:如何处理`CURLE_AGAIN`
- 错误处理.将系统错误代码映射到泛型
- 从文本文件中读取时钟时间和事件时间并进行处理
- 在运行时处理类型擦除的数据-如何不重新发明轮子
- 在for循环中使用auto vs decltype(vec.size())来处理字符串的向量
- 用于矢量处理的多个线程
- 对字符串进行排序时,在c++中处理sort()
- 如何处理linux终端中带有负号(-)的C++中的命令行参数
- 处理QlistWidget单击和滚动
- 如何迭代QListWidget项并处理每个项
- 在批处理模式下使用 QListWidget 时闪烁问题