2015-01-08 4 views
2

Я хочу создать пользовательский оконный фрейм для приложения, которое я сделал в Qt 5.4 с QML. Прежде чем реализовать его в моем основном проекте, я попробовал следующее приложение по умолчанию:Проблемы с LNK2019 при попытке получить пользовательский оконный фрейм в Qt

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)" ([email protected]@[email protected]) referenced in function "void __cdecl `dynamic initializer for 'qmlEnableDebuggingHelper''(void)" ([email protected]@YAXXZ) 

main.obj:-1: error: LNK2019: unresolved external symbol "__declspec(dllimport) public: __cdecl QDeclarativeView::QDeclarativeView(class QWidget *)" ([email protected]@[email protected]@@@Z) referenced in function main 

main.obj:-1: error: LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual __cdecl QDeclarativeView::~QDeclarativeView(void)" ([email protected]@[email protected]) referenced in function main 

Я знаю, что это связано с моим файлом .pro, но не слишком хорошо понимает ошибки LNk, я пробовал разные вещи, но до сих пор не достигнут прогресса. Как это исправить?

+0

Что касается 'Quick2', посмотрите [этот вопрос] (http://stackoverflow.com/questions/17781802/transparent-widget-with-qtquick-2-0), а также [обсуждение этого форума] (http://qt-project.org/forums/viewthread/23995) об использовании 'QQuickView'. – BaCaRoZzo

ответ

2

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

QT += declarative 

From the doc:

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

Для использования 1 модуль Qt Quick, добавьте "декларативный" к вашему QMAKE .pro файла:

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

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

также:

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

... QDeclarativeView -> QQuickView

Но:

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

+1

@EdwardMckinzie может быть, это мой ответ будет вам также полезен: http://stackoverflow.com/questions/26870559/restore-minimized-frameless-window-in-qml – Chernobyl

+0

Hah! Еще раз спасибо. Кстати, теперь я пытаюсь понять, как свести к минимуму окно, когда нажата кнопка в qml lol.I было бы здорово, если бы вы могли указать мне в правильном направлении. –

 Смежные вопросы

  • Нет связанных вопросов^_^