[Qt] Qt만의 반영 메커니즘 학습

장 탐색

1 분석

리플렉션의 여러 용도:

  1. 문자열 가져오기 클래스
  2. 문자열은 클래스 함수(메서드)를 사용합니다.
  3. 문자열은 클래스 변수(속성)를 사용합니다.

2 정보

QObject::metaObject() 메서드를 통해 QObject에서 상속된 모든 클래스는 메타 객체 시스템에서 생성된 metaObject 객체를 반환하고 QMetaObject::newInstance()로 새 인스턴스를 생성할 수 있습니다.

반사 클래스 ClassA는 Q_INVOKABLE 및 Q_PROPERTY 플래그의 도움으로 QObject를 상속합니다
.

  1. QMetaClassInfo
  2. QMetaEnum
  3. Q메타 방법
  4. Q메타 속성

그리고 호출을 구현합니다.
자세한 내용은
참조 문서 1: Qt의 리플렉션 메커니즘을 사용하여 작성된 클래스에 대한 관련 정보 얻기
참조 문서 2: Qt 리플렉션 메커니즘을 사용하여 속성 정보 얻기를 참조하십시오.

2.1 Q_INVOKABLE을 사용하여 클래스의 매개변수화/비매개변수화 함수 호출 실현

Qt는 반사 메커니즘을 사용하여 객체의 멤버 함수 호출을 실현합니다.

QtInvoke* inv = new QtInvokeA;
qDebug() << QMetaObject::invokeMethod(inv, "test");int retVal = 0;
qDebug() << QMetaObject::invokeMethod(inv
	, "testAdd"
	,Q_RETURN_ARG(int, retVal)
	,Q_ARG(int, 65)
	,Q_ARG(int, 42));

qDebug() << retVal;

2.2 기능 및 속성

Qt의 리플렉션 사용법
Object에서 상속받은 리플렉션 클래스를 등록할 때 반환된 일련번호를 QMap(int형, QString 클래스명)에 저장할 수 있으며, 문자열을 통해 클래스객체를 생성하는데 사용된다.

다시 채우다:

Supongo que te gusta

Origin blog.csdn.net/starfire_hit/article/details/126856696
Recomendado
Clasificación