나는 프로그램이 내 함수 중 하나에 도착할 때 실제로 C++ Qt.in에 의해 쓰고있는 프로그램에서 잠시 멈추고 싶다. 예를 들어 5 초 동안 멈추고 다음 lines.what을 계속해야한다. 해야 할 것?몇 초 동안 프로그램을 일시 중지하는 방법은 무엇입니까?
그 함수는 클래스의 멤버 함수이고 나는 당신이 정말 당신이 몇 가지 옵션
을 가지고 있다고해야 할 경우
나는 프로그램이 내 함수 중 하나에 도착할 때 실제로 C++ Qt.in에 의해 쓰고있는 프로그램에서 잠시 멈추고 싶다. 예를 들어 5 초 동안 멈추고 다음 lines.what을 계속해야한다. 해야 할 것?몇 초 동안 프로그램을 일시 중지하는 방법은 무엇입니까?
그 함수는 클래스의 멤버 함수이고 나는 당신이 정말 당신이 몇 가지 옵션
을 가지고 있다고해야 할 경우
:
는 QT4와QMutex mut;
mut.lock();
mut.tryLock(milliseconds);
mut.unlock(); // I am not sure if this is a necessity
당신이 뮤텍스에 QWaitCondition::wait()
을 사용할 수 있습니다;
인터페이스 스레드에 있으면 간격이 ellapses 때까지 gui가 고정됩니다.
완벽한 답변을 주셔서 대단히 감사드립니다 ... –
... 클래스의 각 인스턴스에 대해 (일시 중지) 그 일 O를 원하는 당신은 (그것은 일반적으로 나쁜 생각 때문에 사람들은 보호)
을 QThread을 상속하고 공개함으로써 QThread'ssleep
방법을 사용할 수 있습니다 또는 당신은 QTimer과 함께 QEventLoopexec
를 사용할 수 있습니다. 타이머의 신호를 QEventLoop의 quit()
슬롯에 연결하십시오. 이렇게하면 "비 차단"대기가 발생하여 앱이 멈추지 않습니다.
아니면 대신, 두 가지 방법으로 코드를 분할 두 번째 하나 slot
하고
편집 적합한 타이머를 호출해야합니다 : 당신이 finishEating
슬롯을 호출하는 QTimer::singleShot
를 사용하여 먹는 방법, 뭔가 같은 X
초 후에
당신은이 부분을 읽어보십시오 : 당신은 다음과 같은 트릭을 사용할 수 있습니다 Qt5를 사용하는 경우 http://qt-project.org/doc/qt-5.0/qtcore/thread-basics.html
감사합니다 ... 도움이되었습니다 –
메인 스레드 또는 작업자 스레드에 있습니까? – RobbieE
이것을 달성하고자하는 이유를 자세히 설명해 주시겠습니까? 나는 그들에게 내가이 work.that 필요 일부 초 동안 먹고 말을 아끼지 않겠습니다 "철학자 문제의 식사"의 솔루션을 쓰고 있어요 – Kcvin
클래스의 각 인스턴스가 하나 내 "철학자 수업"의 인스턴스는 몇 초 동안 먹습니다 (잠시 멈춤) –