저는 C++ 라이브러리를 가지고 있습니다. 이 라이브러리는 publish-subscriber 패턴을 사용합니다.Qt 연결이 작동하지 않습니다.
namespace mylib {
typedef unsigned MyLibType;
class IEvent
{
virutal ~IEvent() {}
virtual void event1() = 0;
virtual void event2(MyLibType) = 0;
};
class IMyClass
{
public:
virtual ~IMyClass() {}
// operations
};
} // mylib
// C interface
int CreateMyClass(mylib::IMyClass** class, mylib::IEvent* listener);
// implementation
class MyClass : public IMyClass { // ...
MyClass가 생성 될 때 일부 이벤트를 생성하는 스레드를 사용합니다. Qt는 지금
:
class QtMyApplication : public QMainWindow, public mylib::IEvent
{
Q_OBJECT
public:
explicit QtMyApplication(QWidget *parent = 0);
~QtMyApplication();
signals:
void MyLibEvent1();
void MyLibEvent2(mylib::MyLibType);
private slots:
void OnMyLibEvent1();
void OnMyLibEvent2(mylib::MyLibType);
private: // IEvent interface
void event1()
{
emit MyLibEvent1();
}
void event2(mylib::MyLibType i)
{
emit OnMyLibEvent2(i);
}
private:
Ui::QtMyApplication* ui;
mylib::IMyLib mMyLib;
};
// implementation
QtMyApplication::QtMyApplication(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::QtMyApplication)
{
ui->setupUi(this);
CreateMyLib(&mMyLib, this);
connect(this, SIGNAL(MyLibEvent1()),
this, SLOT(OnMyLibEvent1()));
connect(this, SIGNAL(MyLibEvent2(mylib::MyLibType)),
this, SLOT(OnMyLibEvent2(mylib::MyLibType)));
}
나는() QtMyApplication 내에서 호출 되나 OnMyLibEvent2 호출되지 않습니다 응용 프로그램 event2을 실행
대신합니다 Event1()라고하며 OnMyLibEvent1이 너무이라고합니다. 내가 잘못 했나요? 인수 매개 변수가 문제입니까?편집 한
은 내가 MyLibEvent2(int)
에 MyLibEvent2(mylib::MyLibType)
을 변경하면 모두가 제대로 작동하기 때문에 연결이
으로 업데이트하기로 결정한 경우 event2()가 호출되지 않습니다. – codeling
'event2'가 실행되고'emit MyLibEvet2 (i)'를 호출하지만'OnMyLibEvet2'는 절대 호출되지 않습니다 –
또 다른 이상한 점은 Qt가 출력한다는 것입니다 : 출력 창에'pc 0x400 in psymtab, symtab에는 없습니다 .' –