Qt C++ - 无法添加插槽
Qt C++ - Can't add slots
当我在脚本中添加插槽时,它将不再构建。
inkpuppet.obj:-1: error: LNK2005: "private: void __cdecl InkPuppet::on_aboutButton_clicked(void)" (?on_aboutButton_clicked@InkPuppet@@AEAAXXZ) already defined in main.obj
和
debugInkPuppet.exe:-1: error: LNK1169: one or more multiply defined symbols found
这是代码:
h-注释掉void on_aboutButton_clicked();
,最后的函数将使其运行。
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QtCore>
namespace Ui {
class InkPuppet;
}
class InkPuppet : public QWidget
{
Q_OBJECT
public:
explicit InkPuppet(QWidget *parent = 0);
~InkPuppet();
private:
Ui::InkPuppet *ui;
private slots:
void on_aboutButton_clicked();
};
#endif // WIDGET_H
void InkPuppet::on_aboutButton_clicked()
{
}
inkpupt.cpp
#include "inkpuppet.h"
#include "ui_inkpuppet.h"
InkPuppet::InkPuppet(QWidget *parent) :
QWidget(parent),
ui(new Ui::InkPuppet)
{
ui->setupUi(this);
//connect(ui->lowerFrameBox, SIGNAL(valueChanged(int)), ui->timeSlider, SLOT(setRange(int,int)));
}
InkPuppet::~InkPuppet()
{
delete ui;
}
main.cpp
#include "inkpuppet.h"
#include "aboutdialog.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
InkPuppet w;
w.show();
return a.exec();
}
aboutdialog.h
#ifndef ABOUTDIALOG_H
#define ABOUTDIALOG_H
#include <QDialog>
namespace Ui {
class AboutDialog;
}
class AboutDialog : public QDialog
{
Q_OBJECT
public:
explicit AboutDialog(QWidget *parent = 0);
~AboutDialog();
private:
Ui::AboutDialog *ui;
};
#endif // ABOUTDIALOG_H
关于拨号.cpp
#include "aboutdialog.h"
#include "ui_aboutdialog.h"
AboutDialog::AboutDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::AboutDialog)
{
ui->setupUi(this);
}
AboutDialog::~AboutDialog()
{
delete ui;
}
您在inkpuppet.h中定义void InkPuppet::on_aboutButton_clicked()
,然后将其包含在inkpuppt.cpp中,并在main.cpp->中找到一个或多个多重定义符号。
放入
void InkPuppet::on_aboutButton_clicked()
{
}
在您的inkpupt.cpp文件中。
如果粘贴的第一个文件是一个整体,则include保护程序有问题。定义为在防护端之后。
#endif // WIDGET_H
void InkPuppet::on_aboutButton_clicked()
{
}
您的定义正好在#endif
之后,这意味着只要在同一翻译单元中,标头被包含两次,就会出现此错误。这种情况发生在您的代码中,因为inkpuppet.h
包含在main.cpp
和inkpuppet.cpp
中。您应该将on_aboutButton_clicked()
的实现代码放在inkpuppet.cpp
文件中。
相关文章:
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- 如何在没有信号的情况下从C++执行QML插槽
- 从Q_INVOKABLE功能或插槽中更改QQuick图像源
- 升压信号2将插槽传递到成员功能以断开连接
- 如何在qt中将信号和插槽与另一个对象连接 --解决了
- C++ 信号和插槽不工作:插槽不响应事件
- NS3 插槽混淆(需要帮助理解)
- QObject::连接无法将信号连接到*this*对象的插槽
- QT 插槽未在主线程上调用
- 通过插槽和信号在不同线程中的两个qt对象之间进行通信
- 控制带有信号/插槽的Qt QML滑动视图
- Qt 信号/插槽问题
- QT5 信号不会激活插槽内的功能
- Qt5:连接:如果插槽的参数少于信号,如何使用"连接"
- 添加按钮时出错,即使存在这样的插槽,也不存在
- C QT4:添加使用QObject实现的插槽
- 如何向 QWidget 添加插槽
- Qt C++ - 无法添加插槽
- 如何将QActions列表添加到QMenu并用单个插槽处理它们
- 无法添加插槽并连接到按钮