Q_OBJECT lässt sich nicht kompilieren
Verfasst: 10. Dezember 2008 15:50
hi,
Mein ursprüngliches Problem war, dass connect nicht auf einen SLOT in der eigenen Klasse zugreifen konnte. Darum habe ich laut Doku ein Q_OBJECT in den "private" Bereich der Klasse eingefügt (die Methoden werden ausserhalb definiert, jedoch im gleichen file). Damit das Makro Q_OBJECT "angenommen" wird, muss die Klasse von QObject erben. Meine Klasse erbt von QWidget, das wiederum von QObject erbt. Also sind die Bedingungen doch erfüllt?
Mein Code:
Was habe ich falsch verstanden?
Mein ursprüngliches Problem war, dass connect nicht auf einen SLOT in der eigenen Klasse zugreifen konnte. Darum habe ich laut Doku ein Q_OBJECT in den "private" Bereich der Klasse eingefügt (die Methoden werden ausserhalb definiert, jedoch im gleichen file). Damit das Makro Q_OBJECT "angenommen" wird, muss die Klasse von QObject erben. Meine Klasse erbt von QWidget, das wiederum von QObject erbt. Also sind die Bedingungen doch erfüllt?
Mein Code:
Code: Alles auswählen
class MyWidget : public QWidget
{
Q_OBJECT
public:
MyWidget(QWidget* parent=0);
public slots:
void find();
};
MyWidget::MyWidget(QWidget *parent) : QWidget(parent)
{
QPushButton *findButton = new QPushButton;
[...]
findButton->setText(tr("&Solve"));
findButton->setFont(QFont("Times", 18, QFont::Bold));
bool ok = connect(findButton,SIGNAL(clicked()), this , SLOT(find()));
if (!ok)
Out->setText(QString("fail")); //eigene Klasse
//Layouts
QGridLayout * gridLayout = new QGridLayout;
//[...]
setLayout(mainLayout);
}
void MyWidget::find()
{
// code
}
int main (int argc , char * argv[])
{
QApplication App(argc, argv);
MyWidget widget;
widget.setGeometry(300,400,300,400);
widget.show();
return App.exec();
}