CSharpでは、書くのと同じくらい簡単です:
listBox1.Items.Add("Hello");
listBox1.Items.Add("There");
foreach (string item in listBox1.Items )
{
MessageBox.Show(item.ToString());
}
また、さまざまなオブジェクトをリストボックスに簡単に追加し、foreachを使用してそれらを取得できます。 Qt 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());
}
だからここに私の質問があります:
(そのsetTextColorの代わりにQMessagBoxを使用し、QlistWidget内のすべての文字列項目を印刷したいとします。)
items function はあなたが思っていることをしていないと思います。ウィジェットのすべてのアイテムのリストを取得するのではなく、MIMEデータをデコードするためのようです。
残念ながら、私は実際にあなたが望んでいることを正確に実行するための機能を見ていません。おそらく findItems を回避策として使用できますが、実際には乱用されていないとしても、醜く見えます...少なくとも古き良きfor
ループ-それらはそれではありませんより多くのタイピング:
for(int i = 0; i < listWidget->count(); ++i)
{
QListWidgetItem* item = listWidget->item(i);
//Do stuff!
}
お役に立てば幸いです。
コードでリストアイテムを作成する場合は、各アイテムへのポインターを作成してみてください。ただし、.uiファイルを使用してリストアイテムを作成する場合は、リストアイテムを右クリックして、編集スタイルシートを押してみてください。そうすれば、非常に簡単に編集できます。
あなたはこのようなことをすることができます:
for(int i = 0; i < listWidget->count(); ++i)
{
QString str = listwidget.item(i)->text();
//Do stuff!
}