Проблемы LNK2019 при попытке получить пользовательскую рамку окна в Qt

Мне нужен пользовательский фрейм окна для приложения, которое я сделал в 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, я пробовал разные вещи, но до сих пор не продвинулся. Как это исправить?


person Amol Borkar    schedule 08.01.2015    source источник
comment
Что касается Quick2, взгляните на этот вопрос, а также на это обсуждение на форуме об использовании QQuickView.   -  person BaCaRoZzo    schedule 08.01.2015


Ответы (1)


Добавьте в про файл:

QT += declarative

Из документа:

В целях переноса старых приложений модуль QtDeclarative по-прежнему доступен в Qt 5, но был переименован в Qt Quick 1. Приложения, которым требуется специальный API Qt Quick 1 (например, QDeclarativeView или QDeclarativeItem и интеграция с графическим представлением), могут использовать этот модуль. Обратите внимание, что новые приложения должны вместо этого использовать новые модули Qt QML и Qt Quick.

Чтобы использовать модуль Qt Quick 1, добавьте «декларативный» в ваш файл qmake .pro:

Необходимые заголовочные файлы могут быть включены следующим образом:

#include <QtDeclarative/QDeclarativeView>
#include <QtDeclarative/QDeclarativeItem>

Также:

Все классы, которые ранее находились в модуле QtDeclarative, были перемещены в модули Qt QML и Qt Quick, а их имена классов были изменены, чтобы отразить их новое расположение в модулях. Изменения имени класса следующие:

... QDeclarativeView -> QQuickView

Но:

(Модуль QtDeclarative по-прежнему доступен разработчикам как модуль Qt Quick 1, как обсуждается ниже. Однако его не следует использовать для новых приложений.)

person Kosovan    schedule 08.01.2015
comment
@EdwardMckinzie, возможно, этот мой ответ будет полезен и для вас: qml">stackoverflow.com/questions/26870559/ - person Kosovan; 08.01.2015
comment
Ха! Спасибо еще раз. Кстати, я сейчас пытаюсь понять, как свернуть окно при нажатии кнопки в qml, лол. Было бы здорово, если бы вы указали мне правильное направление. - person Amol Borkar; 08.01.2015