기존 관리 콘솔 응용 프로그램에서 GUI를 래핑하려고합니다. 주된 기능은 제한을 특정하고, 시간 제한 (차단 할 슬립을 사용하여) 만료 될 때까지 본질적으로 블로킹 호출이다 네트워크 디바이스를 검색하는 것이다. 이 예에서는 this->Manager->Search(...)
입니다.QTListWidget을 강제 업데이트하여 요소를 추가/제거합니다.
내 문제는 검색이 진행되는 동안 QListWidget에 "Searching ..."을 표시 한 다음 검색이 완료 될 때 결과로 업데이트하려고한다는 것입니다. 다음과 같이 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 비트 Win7에 프로 64 비트에서 실행 VS2012
- 은 (그러나 OSX와 리눅스로 포팅 할 사용하여 컴파일 된
- , 그래서 아무것도 승리 -specific please)
이 관리자 -> 관리자 -> 검색에서 차단하면 다른 스레드에서 실행해야합니다 ... – Trompa