この方法で信号に接続しようとしています:
QObject::connect(myObj, SIGNAL(mySignal(std::list<MyClass*> myList)), this, SLOT(mySlot(std::list<MyClass*> myList)));
スロットは呼び出されません。それは間違っていますか?ペアstd::list
で使えますか?signal/slot
編集:パラメータなしの同じペアが機能します
class TestThread : public QThread
{
Q_OBJECT
public:
.....
protected:
virtual void run();
private:
std::list<MyClass*> myList;
signals:
void mySignal(std::list<MyClass*>&);
};
Q_DECLARE_METATYPE (std::list<MyClass*>)
編集:
void mySlot(const std::list<MyClass*> &);
void
MyManager::mySlot(const std::list<MyClass*> &theList)
{
std::cout << "mySlot " << std::endl;
}
void mySignal(const std::list<MyClass*> &theList);
TestThread ::TestThread (std::list<MyClass*>&theList, QObject *parent)
: QThread(parent), myList(theList)
{
}
void
TestThread ::run()
{
...
emit mySignal(myList);
}
最終的には:
QObject::connect(threadObj, SIGNAL(mySignal(std::list<MyClass*>)), this, SLOT(mySlot(std::list<MyClass*>)));