내가 이런 걸 가지고 : 다음 사항을 관리하는 개체가Qt는 AutoConnection 행동과 슬롯을 호출 (4.8) 간단한 방법
class Thing : public QObject {
...
public slots:
void doSomething();
...
};
,이 같은 :
이class ManyThings : public QObject {
...
public:
void makeThingDoSomething (int thingIndex);
private:
QVector<Thing *> things_;
...
};
내 질문입니다 this : ManyThing 컬렉션의 것들은 몇 가지 다른 스레드로 분산되어 있습니다. makeThingDoSomething (int)은 Qt :: AutoConnection과 연결된 신호에서 슬롯이 호출 된 것처럼 things_ [thingIndex] -> doSomething() 슬롯을 호출하려고합니다. 기본적으로이 있지만 것은 호출자와 다른 스레드에있는 경우 Qt의 큐잉 메커니즘을 사용하여 :
void ManyThings::makeThingDoSomething (int thingIndex) {
// i want to do this AutoConnection style, not direct:
things_[thingIndex]->doSomething();
// doesn't *need* to block for completion
}
이를 설정하는 가장 간단한 방법은 무엇입니까? ManyThings에서 신호를 만들어서 그것을 Thing의 슬롯 각각에 연결할 수는 있지만, 그 신호를 내보내는 것은 특정 슬롯뿐만 아니라 모든 Thing의 슬롯을 호출합니다. 쉽게 신호를 전달하는 인덱스 매개 변수에 따라 다른 객체의 슬롯에 동일한 신호를 연결할 수 있도록 연결을 쉽게 설정할 수있는 방법이 있습니까? Qt의 신호/슬롯 메커니즘을 사용하여 실제로 신호를 생성하지 않고 슬롯을 호출하는 방법은 무엇입니까? QMetaObject::invokeMethod
를 사용
정확히 내가 무엇을 찾고 있었습니까. 감사! –
메소드 이름을 바꾸면 리팩토링 도구가이 호출을 처리 할 수 없습니다. –
@ RafałPrzemysławMalinowski Visual Studio 용 Visual Assist X 플러그인에 포함 된 것과 같은 일부 리팩토링 도구는 메서드 이름을 변경하여이를 처리 할 수 있습니다. –