2012-07-12 2 views
0

내가 사용하고있는 QProgressBar에 무기한 진행/통화 중 효과를 표시해야합니다. 문서에서 max 및 min 값을 0으로 설정하여 읽을 수 있음을 읽었습니다. 동일한 결과를 얻었지만 올바르게 처리하지 못했습니다. Plastique 스타일을 사용하면이 효과가 발생하지 않는다는 버그에 대해 읽었습니다. 다른 방법으로 효과를 얻을 수 있습니까?QProgressBar의 무기한 진행

+0

loop it :'if (progressBar-> value == 100) progressBar = 0'; – SingerOfTheFall

답변

0

하나의 솔루션 (반드시 C++ 일 필요는 없음)은 진행중인 진행률 표시 줄을 보여주는 애니메이션 GIF 만 표시 할 수 있습니까?

0

이 문제도 발생했습니다. 내가 찾은 것은 작업이 기본 스레드가 아닌 작동중인 스레드에서 수행되었는지 확인하면 더 잘 작동한다는 것입니다. 하지만 슬프게도 진행률 표시 줄에 이상한 점이 표시되는 경우가 있습니다.

+1

이 "이상한 일"은 자신의 코드가 다시 입력되어 있기 때문일 수 있습니다. 'QProgressBar :: setValue'는 당신의 뒤에있는'QApplication :: processEvents()'를 호출합니다. 따라서 그것은 [당신이 그것을 불렀던 바로 그 슬롯으로 다시 들어갈 수 있습니다] (http://stackoverflow.com/a/11433796/1329652). 실용적인 참고 자료와 함께 실행 완료 코드에 대한 간단한 설명을 보려면 해당 답변을 참조하십시오. Qt는 항상 진행 막대의'setValue()'에서'processEvents()'를 제거하는 패치로 수정합니다. GUI 스레드에서 실행되는 코드가 항상 짧은 실행 완료 작업을 수행하는지 확인하는 것은 사용자 자신의 임무입니다. –

+0

@KubaOber 아니, 될 수 없다. 나는'QProgressBar :: setValue'를 호출 할 때 결코 문제가 없으며, 호출하지 않을 경우에만 문제가 발생합니다 (이것은 무한 진도 막대이기 때문에). 또한 진행 막대로 작업 할 때 항상 작업자 스레드를 사용하므로 GUI 스레드는 아무 것도하지 않습니다. – PierreBdR

+0

GUI 스레드에서 작업 할 때 오랜 시간 동안 GUI 스레드를 차단할 가능성이 큽니다. [다른 답변에 설명 된대로] 이벤트 루프를 계측하고 (http://stackoverflow.com/a/11000873/1329652) 그 경우인지 확인할 수 있습니다. –