我无法编译这个QT程序,因为我收到关于“Dialog :: status(QString const&)”的多重定义的消息“
有一些代码: 对话器:
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
//class QCheckBox;
class QLabel;
class QLineEdit;
class QPushButton;
class Dialog : public QDialog
{
Q_OBJECT
public:
Dialog(QWidget *parent = 0);
signals:
void status(const QString &str);
private slots:
void on();
private:
QLabel *label;
QLineEdit *LineEdit;
QPushButton *button;
};
#endif // DIALOG_H
和实施文件:
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
#include <QHBoxLayout>
#include "dialog.h"
Dialog::Dialog(QWidget *parent) : QDialog(parent)
{
label = new QLabel("Ne label");
LineEdit = new QLineEdit();
button = new QPushButton("Push me");
QHBoxLayout *layout = new QHBoxLayout();
layout->addWidget(label);
layout->addWidget(LineEdit);
layout->addWidget(button);
setLayout(layout);
setWindowTitle("Dialog name");
connect(button, SIGNAL(clicked()), this, SLOT(on()));
}
void Dialog::on()
{
label->setStyleSheet("QLabel { background-color : black; color : white; }");
}
void Dialog::status(const QString &str)
{
}
项目文件看起来很好:
QT += gui declarative
SOURCES += \
main.cpp \
dialog.cpp
HEADERS += \
dialog.h
感谢您的帮助。
答案 0 :(得分:4)
您将状态函数声明为信号,然后为其实现一个实体。信号只是一个信号而没有实现。
根据您的意图,您需要删除状态函数的body实现,或者将声明移动为插槽而不是信号。