既存の管理コンソール アプリに GUI をラップしようとしています。主な機能はネットワーク デバイスを検索することです。これにはタイムアウトが与えられ、基本的にはタイムアウトが期限切れになるまで呼び出しをブロックします (スリープを使用してブロックを行います)。この例では、呼び出しはthis->Manager->Search(...)
.
私の問題は、検索の実行中に QListWidget に「検索中...」と表示し、検索の完了時に結果を更新することです。ボタンのクリック時のコードSearch
は次のとおりです。
void ManagerGUI::on_searchButton_clicked()
{
ui->IPList->clear();
new QListWidgetItem(tr("Searching..."), ui->IPList);
ui->IPList->repaint();
this->Manager->Search(static_cast<unsigned int>(this->ui->searchTime->value()*1000.0));
ui->IPList->clear();
if(this->Manager->GetNumInList() != 0)
this->displayFoundInList(this->Manager->GetFoundList());
else
new QListWidgetItem(tr("No Eyes Found"), ui->IPList);
ui->IPList->repaint();
}
ボタンを押すと、QListWidget
IPList
タイムアウトが発生するまで更新されません (このコールバックが終了するまでと思います)。誰か提案はありますか?ui->IPList->repaint()
呼び出すとすぐにリストが再描画されるという印象を受けました。
追加情報:
- QT バージョン 5.1.0 32 ビット
- VS2012 を使用してコンパイル
- Win7 Pro 64 ビットで動作します (ただし、OSX および Linux に移植されるため、win 固有のものはありません)