Ich lerne, wie Qt für C++ GUI-Programmierung zu verwenden, und ich bin nicht in der Lage, das Projekt aufgrund eines seltsamen Fehlers zu kompilieren.Probleme mit Konstruktor mit Qt
bekomme ich folgende Fehlermeldung:
error: out-of-line definition of 'FindDialog' does not match any declaration in 'FindDialog'
Aber ich kann nicht sehen, warum heißt es, dass seit der Festlegung und Durchführung der Klasse Finddialog Spiel perfekt. Hier ist der Code der .h und .cpp Datei. Ich hoffe, dass mir jeder sagen kann, wo der Fehler liegt und wie ich ihn lösen könnte.
Die H-Datei:
#ifndef FINDDIALOG_H
#define FINDDIALOG_H
#include <QDialog>
class QCheckBox;
class QLabel;
class QLineEdit;
class QPushButton;
class FindDialog : public QDialog
{
Q_OBJECT
public:
FindDialog(QWidget *parent = 0);
signals:
void findNext (const QString &str, Qt::CaseSensitivity cs);
void findPrevious (const QString &str, Qt::CaseSensitivity cs);
private slots:
void findClicked();
void enableFindButton (const QString &text);
private:
QLabel *label;
QLineEdit *lineEdit;
QCheckBox *caseCheckBox;
QCheckBox *backwardCheckBox;
QPushButton *findButton;
QPushButton *closeButton;
};
#endif // FINDDIALOG_H
Die CPP-Datei:
#include "finddialog.h"
#include <QDialog>
#include <QLabel>
#include <QPushButton>
#include <QLineEdit>
#include <QCheckBox>
#include <QHBoxLayout>
#include <QVBoxLayout>
FindDialog::FindDialog (QDialog *parent) : QDialog(parent)
{
label = new QLabel(tr("Find &what:"));
lineEdit = new QLineEdit;
label->setBuddy(lineEdit);
caseCheckBox = new QCheckBox(tr("Match &case"));
backwardCheckBox = new QCheckBox(tr("Search &backward"));
findButton = new QPushButton(tr("&Find:"));
findButton->setDefault(true);
findButton->setEnabled(false);
closeButton = new QPushButton(tr("Close"));
connect(lineEdit, SIGNAL(textChanged(const QString &)),
this, SLOT(enableFindButton(const QString &)));
connect(findButton, SIGNAL(clicked()),
this, SLOT(findClicked()));
connect(closeButton, SIGNAL(clicked()),
this, SLOT(close()));
QHBoxLayout *topLeftLayout = new QHBoxLayout;
topLeftLayout->addWidget(label);
topLeftLayout->addWidget(lineEdit);
QVBoxLayout *leftLayout = new QVBoxLayout;
leftLayout->addLayout(topLeftLayout);
leftLayout->addWidget(caseCheckBox);
leftLayout->addWidget(backwardCheckBox);
QVBoxLayout *rightLayout = new QVBoxLayout;
rightLayout->addWidget(findButton);
rightLayout->addWidget(closeButton);
rightLayout->addStretch();
QHBoxLayout *mainLayout = new QHBoxLayout;
mainLayout->addLayout(leftLayout);
mainLayout->addLayout(rightLayout);
setLayout(mainLayout);
setWindowTitle(tr("Find"));
setFixedHeight(sizeHint().height());
}
void FindDialog::findClicked()
{
QString text = lineEdit->text();
Qt::CaseSensitivity cs =
caseCheckBox->isChecked() ? Qt::CaseSensitive : Qt::CaseInsensitive;
if (backwardCheckBox->isChecked())
emit findPrevious(text, cs);
else
emit findNext(text, cs);
}
void FindDialog::enableFindButton (const QString &text)
{
findButton->setEnabled(!text.isEmpty());
}
Gewählt als "einfache Tippfehler" zu schließen: 's/QDialog/QWidget /'. – BoBTFish