Qt가 새로 도입되었습니다. 문제 해결을 도와주세요.신호 및 슬롯을 사용하여 포인터 업데이트
스레드를 사용하여 백그라운드에서 집중적 인 작업을 수행하고 있습니다. 그 사이에 나는 UI를 업데이트하려고합니다. 그래서 나는 신호와 슬롯을 사용하고 있습니다. UI를 업데이트하기 위해 신호를 내고 UI를 업데이트합니다. 우리가 샘플 코드 아래 생각해 보자
,
struct sample
{
QString name;
QString address;
};
void Update(sample *);
void sampleFunction()
{
sample a;
a.name = "Sachin Tendulkar";
a.address = "India"
emit Update(&a);
}
는 위의 코드에서 우리는 로컬 객체를 생성하고 로컬 객체의 주소를 전달한다. Qt 문서에서 우리는 신호를 방출 할 때 신호를 대기열에 배치하고 늦게 신호를 창에 전달할 것이라고 말합니다. 내 개체가 로컬 범위에 있기 때문에 범위를 벗어나면 삭제됩니다.
신호에 포인터를 보내는 방법이 있습니까?
모든 신호 슬롯 연결은 기본적으로 (즉, 슬롯은 방출 내에서 동 기적으로 호출됩니다.) 따라서 로컬 변수에 포인터를 전달할 수 있습니다. MSalters가 권장하는 것처럼 가치에 따라 구조를 전달하는 것이 훨씬 더 좋은 해결책입니다. – chalup
재생 해 주셔서 감사합니다. 동기식이라면 아무 문제 없습니다. 나는 그대로 사용하겠습니다. 필자가 작성한 애플리케이션 구조가 너무 복잡합니다. –