티스토리 뷰

C++

[Qt] Qt 5.0의 webkitwidgets 사용

POWERUMC 2013. 3. 11. 23:49

발생 배경

Qt를 가장 잘 개발할 수 있는 개발 도구 Qt 개발 플랫폼인 Qt 5.0(Qt 5.0 / Qt Creator 2.6.2) 에서 QWebView 위젯을 제대로 link 및 include 할 수 없는 현상이 발생한다. 이전 환경에서는 물론 발생하지 않는, 이전 release에 보고된 버그이다. 

오류 유형은 일치하지 않으나 발생하는 환경은 유사하다고 볼 수 있다. widgets 모듈에 포함되었던 QWebView가 다른 모듈로 분리가 되었기 때문이다. 

:-1: error: symbol(s) not found for architecture x86_64

 

 

해결 방법

해결 방법은 의외로 간단하다. .pro 파일(qmake) 의 속성을 다음과 같이 추가한다.

QT      +=core gui webkitwidgets 


QT 속성은 qmake가 빌드할 때 사용하는 모듈을 지정하는 속성인데, link 또는 dll 개념과 유사하다고 보면 된다. 

그렇다면 정상적으로 다시 컴파일이 가능하고, Code Completion도 정상적으로 동작할 것이다. 아래는 간단한 샘플 소스 코드를 첨부한다.

.pro
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#-------------------------------------------------
#
# Project created by QtCreator 2013-03-11T20:44:09
#
#-------------------------------------------------
QT       += core gui webkitwidgets
 
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
 
TARGET = FacebookNotify
 
TEMPLATE = app
 
SOURCES += main.cpp\
        mainwindow.cpp
 
HEADERS  += mainwindow.h
FORMS    += mainwindow.ui
MainWindow.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QWebView>
  
MainWindow::MainWindow(QWidget*parent): QMainWindow(parent), ui(newUi::MainWindow)
{
    ui->setupUi(this);
  
    this->onLoad();
}
  
MainWindow::~MainWindow()
{
    delete ui;
}
  
voidMainWindow::onLoad()
{
    ui->webView->load(QUrl("http://blog.powerumc.kr"));
}

댓글