Rik*_*ika 16 c++ qt qlistwidget
在CSharp中,它就像写作一样简单:
listBox1.Items.Add("Hello");
listBox1.Items.Add("There");
foreach (string item in listBox1.Items )
{
MessageBox.Show(item.ToString());
}
Run Code Online (Sandbox Code Playgroud)
我可以轻松地将不同的对象添加到列表框中,然后使用foreach检索它们.我在Qt 4.8.2中尝试了相同的方法,但看起来它们是不同的.虽然它们看起来非常相似.我发现Qt支持foreach所以我继续尝试类似于:
foreach(QListWidgetItem& item,ui->listWidget->items())
{
item.setTextColor(QColor::blue());
}
Run Code Online (Sandbox Code Playgroud)
明显失败了.它说items()需要一个让我困惑的参数.我试图遍历ListBox本身,那么这意味着什么?我尝试传递ListBox对象作为参数本身,这也失败了:
foreach(QListWidgetItem& item,ui->listWidget->items(ui->listWidget))
{
item.setTextColor(QColor::blue());
}
Run Code Online (Sandbox Code Playgroud)
所以这是我的问题:
(假设我想使用QMessagBox而不是setTextColor,并希望打印出QlistWidget中的所有字符串项.)
Xav*_*olt 35
我不认为项目功能符合您的想法.这听起来像是用于解码MIME数据,而不是获取窗口小部件中所有项目的列表.
遗憾的是,我实际上看不到任何功能可以完全按照你的意愿行事.你也许可以使用findItems作为一种解决方法,但似乎难看,如果不是彻头彻尾的滥用......至少,你仍然可以使用产品功能与良好的老for循环-他们没有说更多的打字:
for(int i = 0; i < listWidget->count(); ++i)
{
QListWidgetItem* item = listWidget->item(i);
//Do stuff!
}
Run Code Online (Sandbox Code Playgroud)
希望有所帮助!
你可以这样做:
for(int i = 0; i < listWidget->count(); ++i)
{
QString str = listwidget.item(i)->text();
//Do stuff!
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22991 次 |
| 最近记录: |