내가하고 싶은 일은 테스트를 설정하는 페이지 집합을 표시하는 것입니다. 모든 세부 사항이 정확하면 사용자는 Commit을 누르고 다음 마법사 페이지가 표시되어 일련의 테스트를 즉시 실행합니다. 사용자에게 표시하고 사용자를 완료 한 후 다음을 클릭 할 수 있습니다.한 번 이상 호출 된 showEvent() - 의도적입니까?
나는 다음을 알고 있습니다. 다음은 단순히 isComplete()
에 false를 반환하는 경우이며 이는 구현 된 것입니다. 그래서, 위젯이 디스플레이 된 직후에 호출되는 함수를 사용하고 싶습니다. 그래서 사용하고자하는 함수로 저에게 지시 된 showEvent()
을 사용했습니다.
내 테스트는 진행 상황 표시 줄을 테스트로 표시하므로 타이머를 사용하는 것입니다.
void RunTestWizardPage::showEvent(QShowEvent *event)
{
ui->statusEdit->setText("Running Tests");
timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(update()));
timer->start(100);
}
void RunTestWizardPage::update()
{
static int i = 10;
ui->statusEdit->append("Running Tests...");
ui->testProgress->setValue(i++);
if(i == 100)
{
i = 0;
timer->stop();
complete = true;
emit completeChanged();
}
}
그러나이 함수를 두 번 호출 할 나타납니다 (그리고 내 디버깅 트릭 수 있지만 나는 위젯 표시하기 전에 생각)와 같은이 타이머가 끝나지 않아 나는 생각 타이머 문제가 발생합니다. 나는 자발적 사건에 관한 문서에서 읽었지만, 함수에 대한 호출이 모두 자발적이지는 않다는 것을 알 수있다.
의도적으로 두 번 호출되고 있습니까? 그렇다면 어떻게 중지합니까? 아니면 다른 기능을 사용할 수 있습니까?
감사합니다.
불행하게도이 함수는 페이지가 표시되기 전에 호출되므로 원하는 것을 수행하지 않습니다. 그러나 디버깅에서 윈도우가 완전히 표시되기 전에'showEvent'도 호출됩니다. – Firedragon