我有一个C++库。该库使用发布订户模式。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)));
}
当我运行应用程序事件2()被调用内部QtMyApplication但OnMyLibEvent2不会被调用,而不是事件1()被调用,OnMyLibEvent1叫过。 我错了什么?参数参数是否是问题?
编辑1
我发现连接对PARAMS一些限制....因为如果我在MyLibEvent2(int)
改变MyLibEvent2(mylib::MyLibType)
一切工作正常...
可能event2()永远不会被调用? – codeling
'event2'被执行,它调用'发出MyLibEvet2(i)'但'OnMyLibEvet2'永远不会被调用 –
另一个奇怪的事情是Qt打印:'pc 0x400在psymtab中读取,在symtab中读取不在输出窗口 –