2011-05-02 3 views
3

QT C++ 응용 프로그램에서는 QML ModalDialog를 2 개의 버튼 (OK/CANCEL)으로 호출합니다.이 버튼은 화면에 제대로 표시되므로 아무런 문제가 없습니다.QML Modal 대화 상자에서 값을 검색하는 가장 좋은 방법

그러나 QT C++ 응용 프로그램에서 어떤 단추를 눌렀는지 검색하는 방법을 찾기 위해 고심하고 있습니다.

QML ModalDialog를 호출 할 때 사용자가 "확인"버튼이나 취소 버튼을 누를 때까지 기다리는 것이 어떻게 든 멈출 수 없습니다. QML ModalDialog를 호출하고 즉시 해당 부분을 종료하고 잇다.

QMetaObject :: invokeMethod는 QML 함수를 호출하고 반환 값을 가질 수 있지만 사용자가 버튼 중 하나를 누를 때까지 기다리지 않고 즉시 종료되므로 사용하지 않습니다.

이 QML ModalDialog를 내 응용 프로그램의 여러 곳에서 사용하고 싶습니다. (QML 모달 대화 상자에 내 QT C++ 응용 프로그램에서 다른 텍스트가 전달 될 수 있습니다.) 이에 대한 일반적인 해결책을 찾고있었습니다.

기본적으로

및 일반 말하기 나는 이런 식으로 뭔가를 찾고 있어요 :

C/C++ RETURN_VALUE = QML_Modal_Dialog (....)

사람이 올바른 방향으로 날 지점 수 있습니까? 감사합니다.

답변

1

QML 모달 대화 상자에는 '수락'과 '취소됨'이라는 두 개의 신호가 있습니다. 코드에서이 두 신호에 대한 핸들러를 제공하면 눌려진 버튼을 알 수 있습니다. 참조를 위해 아래를 참조 할 수 있습니다. 이 도움이

Modal Dialog Ref 1

Modal Dialog Ref 2

희망!

0

질문이 너무 오래되었지만 내 대답이 다른 사람을 도울 수 있습니다.

나는 QML의 Dialogs와 같은 문제에 직면했다. QML은 프로그램의 흐름을 멈추고 사용자의 선택을 기다리는 것을 허용하지 않는 선언적 언어이지만, 당신은 그것을 절대적으로 생각합니다. Purnima는 신호 처리기를 사용해야한다고 제안 했으므로 (Qt 5.6 here에 대한 목록을 찾을 수 있음). 일부 앱의 로직을 핸들러로 이동합니다. 예를 들어

- 함수 a()이 대화 상자에서 사용자의 선택에 따라 실행되는 경우 대신 신호 처리기의 종류에 따라 서로 다른 두 가지 매개 변수와의 신호 처리기 (예를 들어, onAccepted 또는 onRejected)에 대화 상자 내부를 호출해야합니다. 두 가지 흐름을 나누는 것으로 생각하십시오.

관련 문제