これは私のコードです
QList<QString> IPs; //IP address
...
connect(this, SIGNAL(addItems(QTreeWidgetItem*)), this,
SLOT(addNewItemToTree(QTreeWidgetItem*)));
void MainWindow::startPing()
{
for (int i = ipStart; i <= ipEnd; i++)
{
QTreeWidgetItem *item = new QTreeWidgetItem();
item->setText(0, IPs.at(i));
if (PingHost(IPs.at(i)))
{
item->setText(1, "online");
}
else
{
item->setText(1, "offline");
}
emit addItems(item);
}
}
void MainWindow::addNewItemToTree(QTreeWidgetItem *item)
{
items.append(item);
ui->treeWidget->addTopLevelItem(item);
}
PingHost
は関数です。実行時間はおそらく 2 秒以上です。
エラーや警告なしでこのプログラムをコンパイルして実行しました。
item
順次追加されると思いますtreeWidget
(1件追加されて2秒後にもう1件追加されます。)
しかし、実行すると、Item
長い間待った後にすべてが一度追加されていることがわかりました。なぜ?
それらitems
を私の思うように追加するにはどうすればよいですか?