我想使用qtwebkit在qt5中创建一个浏览器,但是当我下载我的网站时发现了一些错误。我不知道原因。我添加了webkit库,并在mainwindow.h
中调用它:
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QtWebKit/QtWebKit>
namespace Ui { class MainWindow; }
class MainWindow : public QMainWindow {
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_pushButton_clicked();
void on_pushButton_2_clicked();
void on_pushButton_3_clicked();
void on_pushButton_4_clicked();
private:
Ui::MainWindow *ui; };
#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
ui->webView->back();
}
void MainWindow::on_pushButton_2_clicked()
{
ui->webView->forward();
}
void MainWindow::on_pushButton_3_clicked()
{
ui->webView->reload();
}
void MainWindow::on_pushButton_4_clicked()
{
ui->webView->load("http://" + ui->lineEdit->text());
}
,当我调用库
时#-------------------------------------------------
#
# Project created by QtCreator 2013-10-31T07:39:06
#
#-------------------------------------------------
QT += core gui QT += webkit
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = mozilabrwser TEMPLATE = app
SOURCES += main.cpp\
mainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.ui
我尝试更改webkit的名称但我仍然收到此错误:
D:\ubunto\QT5\Tools\QtCreator\bin\mozilabrwser\mainwindow.cpp:19: error:
undefined reference to `_imp___ZN8QWebView4backEv'
答案 0 :(得分:1)
QT += core gui QT += webkit
错了。您似乎使用的是Qt 5,而Qt 5中的正确的模块是webkitwidgets
。第二个问题是格式,你似乎有两行连接。所以这应该有效:
QT += core gui
QT += webkitwidgets
注意:如果您需要使用Qt4和Qt5编译程序,则需要使用条件,为Qt4添加webkit
,为Qt5添加webkitwidgets
。但是这可能不是一个业余爱好项目的关注点,在您真正需要它之前,没有任何意义将.pro
文件与这些内容混淆(如果您需要,还需要在代码中进行一些源更改和#ifdef
内容支持两者,所以不要去那里,除非这是一个重要的要求)。
相同的两行连接问题似乎也在TARGET = mozilabrwser TEMPLATE = app
行。