打开Qt第二个窗口

3

我无法在Qt项目的主窗口中打开一个新的窗口/对话框。

打开函数:

    void MainWindow::on_btDodajProdukt_clicked()
{
    newDialog = new DodajProdukt(this);
    newDialog->show();

}

MainWindow包括:

#include "dodajprodukt.h"

MainWindow.h

    DodajProdukt *newDialog;

类DodajProdukt是设计器中添加的新窗口。

我遇到了这个错误:

mainwindow.obj:-1: 错误:LNK2019: 未解析的外部符号 "public: __thiscall DodajProdukt::DodajProdukt(class QWidget *)" (??0DodajProdukt@@QAE@PAVQWidget@@@Z),该符号在函数 "private: void __thiscall MainWindow::on_btDodajProdukt_clicked(void)" (?on_btDodajProdukt_clicked@MainWindow@@AAEXXZ) 中被引用

编辑:

dodajprodukt.cpp

    #include "dodajprodukt.h"
#include "ui_dodajprodukt.h"


DodajProdukt::DodajProdukt(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::DodajProdukt)
{
    ui->setupUi(this);
}

DodajProdukt::~DodajProdukt()
{
    delete ui;
}

文件:

    QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = Hurtownia
TEMPLATE = app


SOURCES += main.cpp\
        mainwindow.cpp \
    dodajprodukt.cpp \
    listaproduktow.cpp

HEADERS  += mainwindow.h \
    dodajprodukt.h \
    listaproduktow.h

FORMS    += mainwindow.ui \
    dodajprodukt.ui \
    listaproduktow.ui

我的猜测是设计师还应该生成一个dodajprodukt.cpp文件,其中包含您未与项目链接的窗口实现。 - Kos
@kos 怎样将它链接到我的项目中? - Norbert Pisz
4个回答

3

右键点击项目,然后选择:清理,运行qmake和重新构建即可解决问题。


1

如果使用qmake,您必须将与DodajProdukt相关的所有文件添加到您的.pro文件中:

对于在设计师中创建的.ui文件:

FORMS += dodajprodukt.ui # assuming that's how it's called

而且你显然也有相关的.h/.cpp文件:

HEADERS += dodajprodukt.h
SOURCES += dodajprodukt.cpp

1
你在你的.cpp文件中实现了DodajProdukt::DodajProdukt(QWidget*)吗? - Frank Osterfeld
你能添加你的.pro文件吗? - Frank Osterfeld
看起来正确而完整。你在使用Visual Studio吗?确保.pro文件的更改被捕获并且dodajprodukt.cpp实际上已经编译。如果不确定,请尝试进行清理构建。 - Frank Osterfeld

1

我遇到了同样的错误。创建一个新项目并复制代码。 然后创建一个简单的示例代码来检查这个方法是否有效。


最好的做法是完全不使用IDE,如果它有漏洞,就转向好老的命令行。 - user1095108

0

我有同样的问题。

删除.pro.user文件和项目构建文件夹后,我解决了它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接