>백엔드 개발 >C++ >C 신호에서 QML 슬롯으로 QString을 전달하는 방법은 무엇입니까?

C 신호에서 QML 슬롯으로 QString을 전달하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-05 21:08:02973검색

How to Pass a QString From a C   Signal to a QML Slot?

Qt: QString을 사용하여 C 신호를 QML 슬롯에 연결

Qt에서는 C에서 QML의 슬롯으로 신호를 보내는 것이 간단할 수 있습니다. 그러나 QString을 매개변수로 전달하는 경우 몇 가지 문제가 발생할 수 있습니다.

문제:
C 객체(myObj)의 신호를 QML 파일의 슬롯(updateViewWithItem). 슬롯이 QString 매개변수를 수신하도록 정의되었지만 "해당 슬롯 QDeclarativeRectangle_QML_2::updateViewWithItem(QString)"이라는 오류와 함께 연결이 실패합니다.

해결책: 연결 사용

기존 C 스타일 슬롯 신호 연결을 사용하는 대신 Qt는 이 특정 시나리오에 연결 사용을 제안합니다.

단계:

  1. QML에서 C 객체 노출:
    QML 파일에서 컨텍스트 속성을 설정하여 C 객체(myObj)를 QML에 액세스할 수 있도록 합니다.

    <code class="cpp">qmlVectorForm->rootContext()->setContextProperty("YourObject", myOb);</code>
  2. 신호 정의:
    신호는 다음과 같이 정의해야 합니다.

    <code class="cpp">finishedGatheringDataForItem(QString signalString)</code>
  3. QML 연결 만들기:
    QML 파일 내에 연결을 처리할 Connections 객체를 추가합니다.

    <code class="qml">Connections {
        target: YourObject
        onFinishedGatheringDataForItem: {
            qmlString = signalString
        }
    }</code>

Connections를 사용하면 C와 QML 사이에 새로운 브리지를 효과적으로 설정하여 다음을 통과할 수 있습니다. QML 슬롯에 대한 매개변수인 QString.

위 내용은 C 신호에서 QML 슬롯으로 QString을 전달하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.