신호를 슬롯에 연결하고 벡터를 통과하려고 시도했지만 실제로 운이 좋지는 않습니다.신호 및 슬롯 - 데이터 전달
res = QObject::connect(storePayments, SIGNAL(existingPurchasesResponseSuccess(std::vector<QString>)), this, SLOT(RefreshPurchasesSuccess(std::vector<QString>)));
슬롯 :
void RefreshPurchasesSuccess(std::vector<QString>);
void Store::RefreshPurchasesSuccess(std::vector<QString> previousPurchasesArray)
{
//do something
}
신호 :
void existingPurchasesResponseSuccess(std::vector<QString>);
vector<QString> previousPurchasesArray;
emit existingPurchasesResponseSuccess(previousPurchasesArray);
는 신호/슬롯이 정의되지 않은 말한다, 그러나 나는 그것이 작동하는 벡터를 꺼내, 그래서 때 뭔가해야합니다 그걸로 잘못 됐어. 나는 그것을 잘못 정의하고 있는가? 당신이 std::vector<QString>
같은 사용자 정의 구조를 사용하는 경우 메타 타입을
Q_DECLARE_METATYPE(std::vector<QString>)
"이상적으로,이 매크로는 클래스 또는 구조체의 선언 아래에 배치해야합니다. 즉,없는 경우를 선언하고 등록해야합니다
감사
신호 및 슬롯을 쓸 때 오타를 만들기 쉽습니다. typedef를 시도하십시오. – user1095108
정확한 오류 메시지와 신호 및 슬롯에 대한 클래스 선언에있는 _exact_ 구문을 게시하십시오. (대부분의 장소에'std ::'접두사가 있습니다 - 좋은 점 - 마지막 장소를 제외하고 - 의심 스러워요.) – Mat
'std :: vector'를 사용하여'QString'을 저장하는 특별한 이유는 무엇입니까? 그렇지 않다면'QList'에 typedef 인'QStringList'를 사용하십시오. 'srd :: string'을 메타 타입으로 등록하지 않았기 때문에 오류가 발생해도 문제를 해결할 수 있습니다 (필요한 경우 확실하지 않음). –
hyde