我想在Qt 5.4中使用QML创建的应用程序的自定义窗口框架。在我的主项目上实现它之前,我在默认应用程序上尝试了以下内容:
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
//QQmlApplicationEngine engine;
//engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
QDeclarativeView view;
viewsetWindowFlags(Qt::FramelessWindowHint
| Qt::WindowSystemMenuHint
| Qt::WindowMinimizeButtonHint
| Qt::Window);
view.setAttribute(Qt::WA_TranslucentBackground);
view.setMaximumHeight(640);
view.setMaximumWidth(350);
view.viewport()->setAutoFillBackground(false);
view.show();
return app.exec();
}
以下是.pro
文件:
TEMPLATE = app
QT += qml quick widgets
QT += core gui widgets quick
QT += network
SOURCES += main.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)
错误:
main.obj:-1: error: LNK2019: unresolved external symbol "__declspec(dllimport) public: __cdecl QDeclarativeDebuggingEnabler::QDeclarativeDebuggingEnabler(void)" (__imp_??0QDeclarativeDebuggingEnabler@@QEAA@XZ) referenced in function "void __cdecl `dynamic initializer for 'qmlEnableDebuggingHelper''(void)" (??__EqmlEnableDebuggingHelper@@YAXXZ)
main.obj:-1: error: LNK2019: unresolved external symbol "__declspec(dllimport) public: __cdecl QDeclarativeView::QDeclarativeView(class QWidget *)" (__imp_??0QDeclarativeView@@QEAA@PEAVQWidget@@@Z) referenced in function main
main.obj:-1: error: LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual __cdecl QDeclarativeView::~QDeclarativeView(void)" (__imp_??1QDeclarativeView@@UEAA@XZ) referenced in function main
我知道这与我的.pro文件有关,但在理解LNk错误方面不太好,我尝试了不同的事情但没有进展,直到现在。如何解决这个问题?
答案 0 :(得分:2)
添加到专业档案:
QT += declarative
为了移植旧应用程序,QtDeclarative 模块仍在Qt 5中可用,但已重命名为Qt Quick 1。 需要Qt Quick 1特定API的应用程序(例如 QDeclarativeView或QDeclarativeItem和图形视图 集成)可以使用这个模块。请注意,新应用程序应该 请改用新的Qt QML和Qt Quick模块。
要使用Qt Quick 1模块,请添加"声明"到你的qmake .pro 文件:
可以按如下方式包含必需的头文件:
#include <QtDeclarative/QDeclarativeView>
#include <QtDeclarative/QDeclarativeItem>
此外:
以前在QtDeclarative模块中的所有类都是 进入Qt QML和Qt Quick模块,他们的类名有 已更改以反映其新模块位置。班级名称 变化如下:
... QDeclarativeView - &gt; QQuickView
可是:
(QtDeclarative模块仍然可供开发人员用作Qt 快速1模块,如下所述。但是,它不应该用于 新的申请。)