【发布时间】:2021-12-14 02:50:51
【问题描述】:
我一直在尝试解决这个问题,但似乎没有任何效果,尝试清理项目,运行 qmake,确保文件之间没有递归包含,但仍然显示错误。
.h 文件上也没有任何函数体,一切都在 .cpp 文件上。使用#ifndef #define。
还有另一个几乎相同的 QWindow 类(在结构上,而不是名称上),但它工作正常。
错误只出现在这个类中,但在所有函数中,不知道是什么导致了错误。
代码如下:
rlwindow.h
#ifndef RLWINDOW_H
#define RLWINDOW_H
#include <QWidget>
#include <QString>
#include <string.h>
#include "Utilities.h"
//#include "fmanager.h"
namespace Ui {class rlWindow;}
class rlWindow : public QWidget
{
Q_OBJECT
public:
explicit rlWindow(bool login, QWidget *parent = nullptr);
~rlWindow();
private slots:
void on_ContinueButton_clicked();
private:
Ui::rlWindow *ui;
//fmanager *Manager;
pair<string> UserData;
bool LoR; // True = Login / False = Register
};
#endif // RLWINDOW_H
rlwindow.cpp
#include "rlwindow.h"
#include "ui_rlwindow.h"
rlWindow::rlWindow(bool login, QWidget *parent) :
QWidget(parent), ui(new Ui::rlWindow)
{
ui->setupUi(this);
//Manager = new fmanager("Data.txt");
LoR = login;
if(LoR){
ui->TitleLabel->setText("Ingresar");
ui->ContinueButton->setText("Ingresar");
}
else{
ui->TitleLabel->setText("Registro");
ui->ContinueButton->setText("Registrar");
}
}
rlWindow::~rlWindow()
{
delete ui;
}
void rlWindow::on_ContinueButton_clicked()
{/*
UserData.first = ui->UserNameForm->text().toStdString();
UserData.second = ui->UserPassForm->text().toStdString();
if(LoR){
for(uint i = 0; Manager->Data().size() > i; i++){
if(Manager->Data()[i][0] == UserData.first && Manager->Data()[i][1] == UserData.second){
}
}
}
else{
bool aux = false;
for(uint i = 0; Manager->Data().size() > i; i++){
if(Manager->Data()[i][0] == UserData.first){
aux = true;
break;
}
}
if(!aux)
Manager->addItem(UserData.first, UserData.second);
}
*/
}
【问题讨论】:
-
显示完整的错误信息...
-
@eyllanesc 添加了错误图片的链接。
-
问题是你有2个同名的类:
class rlWindow : public QWidget和Ui::rlWindow *ui; -
例如,如果您查看 uic 生成的
ui_rlwindow.h文件,您会看到 setupUi 方法接收到同一类的对象作为参数。 -
哦,那我应该重命名课程还是什么,或者我应该怎么做? @eyllanesc
标签: c++ qt qwidget multiple-definition-error