打开一个dlg链接错误问题

lx624909677 2015-01-01 05:56:30
使用Qt Creator创建好一个工程后,新添加了一个ui,比如他对应的类叫about,在其他地方,我在某个按钮消息槽里添加了about* a=new about;的语句,并且添加了about对应的头文件,编译时候出现一个lnk2019错误,说是找不到他的构造函数和析构函数实现,我看了下,构造函数和析构函数都已经有了呀,但是就是报这个错误,请问该如何解决?
about.h
#ifndef ABOUT_H
#define ABOUT_H

#include <QDialog>

namespace Ui {
class about;
}

class about : public QDialog
{
Q_OBJECT

public:
explicit about(QWidget *parent = 0);
~about();

private:
Ui::about *ui;
};

#endif // ABOUT_H


about.cpp
#include "about.h"
#include "ui_about.h"

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

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


下面是用about类部分的代码
#include "about.h"
about aaa;
aaa.show();


这样写了之后,编译时说找不到about的构造函数和析构函数!求解,谢谢!
...全文
116 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lx624909677 2015-01-01
  • 打赏
  • 举报
回复
感谢soso101的解答
蜗牛sf 2015-01-01
  • 打赏
  • 举报
回复
引用 7 楼 lx624909677 的回复:
为毛啊!!!我的就是lnk2019错误!!!fuck
私信我QQ,如果可以我帮你试下
lx624909677 2015-01-01
  • 打赏
  • 举报
回复
引用 6 楼 soso101 的回复:
[quote=引用 5 楼 lx624909677 的回复:] 麻烦可以帮试试,创建QT Widgets Application工程,然后添加一个基于DLG的ui类,然后再main中启动DLG窗口,这样的工程吗?
试了,没有问题
QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = newtest
TEMPLATE = app


SOURCES += main.cpp\
        dialog.cpp

HEADERS  += dialog.h

FORMS    += dialog.ui
#include "dialog.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Dialog w;
    w.show();

    return a.exec();
}
[/quote] 为毛啊!!!我的就是lnk2019错误!!!fuck
蜗牛sf 2015-01-01
  • 打赏
  • 举报
回复
引用 5 楼 lx624909677 的回复:
麻烦可以帮试试,创建QT Widgets Application工程,然后添加一个基于DLG的ui类,然后再main中启动DLG窗口,这样的工程吗?
试了,没有问题
QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = newtest
TEMPLATE = app


SOURCES += main.cpp\
        dialog.cpp

HEADERS  += dialog.h

FORMS    += dialog.ui
#include "dialog.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Dialog w;
    w.show();

    return a.exec();
}
lx624909677 2015-01-01
  • 打赏
  • 举报
回复
引用 4 楼 soso101 的回复:
[quote=引用 3 楼 lx624909677 的回复:] 另外,pro文件里的内容都已经正确的添加了
我试了一下,没有出现问题,附上我的pro文件,我的项目是qml的项目,请参考下吧
TEMPLATE = app

QT += qml quick widgets

SOURCES += main.cpp \
    about.cpp

RESOURCES += qml.qrc

# Additional import path used to resolve QML modules in Qt Creator's code model
QML_IMPORT_PATH =

# Default rules for deployment.
include(deployment.pri)

FORMS += \
    about.ui

HEADERS += \
    about.h
#include <QGuiApplication>
#include <QApplication>
#include <QQmlApplicationEngine>
#include <QtQml/QQmlEngine>
#include <QtQuick/QQuickView>
#include "about.h"
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

//    QQmlApplicationEngine engine;
//    engine.load(QUrl(QStringLiteral("qrc:///testmultipoints.qml")));

    about aa;
    aa.show();
//    QQuickView view;
//    view.setSource(QStringLiteral("qrc:///prefermovies.qml"));
//    view.setResizeMode(QQuickView::SizeRootObjectToView);

//    QObject::connect(view.engine(), SIGNAL(quit()), qApp, SLOT(quit()));
//#if defined(Q_OS_QNX)
//    view.showFullScreen();
//#else
//    view.show();
//#endif

    return app.exec();
}
[/quote] 麻烦可以帮试试,创建QT Widgets Application工程,然后添加一个基于DLG的ui类,然后再main中启动DLG窗口,这样的工程吗?
蜗牛sf 2015-01-01
  • 打赏
  • 举报
回复
引用 3 楼 lx624909677 的回复:
另外,pro文件里的内容都已经正确的添加了
我试了一下,没有出现问题,附上我的pro文件,我的项目是qml的项目,请参考下吧
TEMPLATE = app

QT += qml quick widgets

SOURCES += main.cpp \
    about.cpp

RESOURCES += qml.qrc

# Additional import path used to resolve QML modules in Qt Creator's code model
QML_IMPORT_PATH =

# Default rules for deployment.
include(deployment.pri)

FORMS += \
    about.ui

HEADERS += \
    about.h
#include <QGuiApplication>
#include <QApplication>
#include <QQmlApplicationEngine>
#include <QtQml/QQmlEngine>
#include <QtQuick/QQuickView>
#include "about.h"
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

//    QQmlApplicationEngine engine;
//    engine.load(QUrl(QStringLiteral("qrc:///testmultipoints.qml")));

    about aa;
    aa.show();
//    QQuickView view;
//    view.setSource(QStringLiteral("qrc:///prefermovies.qml"));
//    view.setResizeMode(QQuickView::SizeRootObjectToView);

//    QObject::connect(view.engine(), SIGNAL(quit()), qApp, SLOT(quit()));
//#if defined(Q_OS_QNX)
//    view.showFullScreen();
//#else
//    view.show();
//#endif

    return app.exec();
}
lx624909677 2015-01-01
  • 打赏
  • 举报
回复
另外,pro文件里的内容都已经正确的添加了
lx624909677 2015-01-01
  • 打赏
  • 举报
回复
引用 1 楼 soso101 的回复:
[quote=引用 楼主 lx624909677 的回复:] 使用Qt Creator创建好一个工程后,新添加了一个ui,比如他对应的类叫about,在其他地方,我在某个按钮消息槽里添加了about* a=new about;的语句,并且添加了about对应的头文件,编译时候出现一个lnk2019错误,说是找不到他的构造函数和析构函数实现,我看了下,构造函数和析构函数都已经有了呀,但是就是报这个错误,请问该如何解决? 这样写了之后,编译时说找不到about的构造函数和析构函数!求解,谢谢!
你说的在其他地方,具体是什么含义?你的这个包含about的工程是个导出库么?如果是这样的话,你需要把about类做导出,然后需要在pro里加入这个库的链接,这样在其他项目里才能正常使用。如果是同一个项目下的话应该不会出现这个问题。[/quote] 不是到出库,就是在添加那里添加了一个QT设计师界面类,然后有这个ui文件对应的.h文件和.cpp文件,但是其他地方想用的时候,头文件已经包含了,但是编译时候出现如上所述的链接错误
蜗牛sf 2015-01-01
  • 打赏
  • 举报
回复
引用 楼主 lx624909677 的回复:
使用Qt Creator创建好一个工程后,新添加了一个ui,比如他对应的类叫about,在其他地方,我在某个按钮消息槽里添加了about* a=new about;的语句,并且添加了about对应的头文件,编译时候出现一个lnk2019错误,说是找不到他的构造函数和析构函数实现,我看了下,构造函数和析构函数都已经有了呀,但是就是报这个错误,请问该如何解决? 这样写了之后,编译时说找不到about的构造函数和析构函数!求解,谢谢!
你说的在其他地方,具体是什么含义?你的这个包含about的工程是个导出库么?如果是这样的话,你需要把about类做导出,然后需要在pro里加入这个库的链接,这样在其他项目里才能正常使用。如果是同一个项目下的话应该不会出现这个问题。

16,240

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧