bin noch Anfänger mit Qt und habe folgendes Problem.
Ich hab mir eine DLL mit einem Slot erstellt, diesen Slot möchte ich nun mit einem Signal aus meiner Application verbinden, jedoch bekomme ich immer die Meldung:
"Object::connect: No such slot QLibrary::setValue(int) in .\sim_gui.cpp:52".
In der DLL befindet sich auch ein Fenster, dieses lässt sich ohne Probleme anzeigen, also ist die DLL ja anscheinend korrekt geladen.
Ich denke der Fehler ensteht schon beim Exportieren der DLL oder beim connect.
Vll kann mir hier ja jemand helfen.
Würde mich auf jedenfall freuen
MfG don
Hier mein Code:
DLL:
Code: Alles auswählen
q_test.h
#include <QtGui>
#include <QWidget>
#include <QString>
class __declspec(dllexport) MyScreen : public QWidget
{
Q_OBJECT
public:
MyScreen(QWidget *parent = 0);
MyScreen(int);
public slots:
void setValue(int);
};
#include "qt_test.h"
void MyScreen::setValue( int v ){
qDebug("\nWerte über Slots: %d",v);
}
MyScreen::MyScreen(QWidget *parent) : QWidget(parent){
setWindowFlags(Qt::Dialog);
setWindowModality(Qt::WindowModal);
resize(400,400);
setWindowTitle("Test Dll");
show();
}
MyScreen::MyScreen(int){
qDebug("\nDLL geladen ");
}
extern "C"{
__declspec(dllexport) QWidget* initMenu()
{
MyScreen* showya;
showya = new MyScreen;
return showya;
}
};stelle hier mal nur den wichtigen Teil rein, valueSetter() ist als Signal deklariert.
Code: Alles auswählen
#include <QtGui>
#include "sim_gui.h"
#include <QLibrary>
...................................
void sim_gui::valueSetter(int v){
emit valueSetted(v);
}
void sim_gui::load_dll() // Der wichtige Teil zum laden der DLL
{
typedef QWidget* (*MenuFunction)();
QLibrary *qlib = new QLibrary("qt_test");
if(qlib->load())
{
MenuFunction test = (MenuFunction) qlib->resolve("initMenu");
if(test)
test(); //aufruf konstruktor von test (DLL) - Fenster
connect(this,SIGNAL(valueSetted(int)),qlib, SLOT(setValue(int)));
}
}