1

qtwebkit を使用して qt5 でブラウザを作成したいのですが、サイトをダウンロードする際にエラーが発生しました。理由はわかりません。Webkit ライブラリを追加し、次のように呼び出しますmainwindow.h

メインウィンドウ.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

メインウィンドウ.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'
4

1 に答える 1

1
QT += core gui QT += webkit

間違っている。あなたはQt 5を使用しているようで、Qt 5では正しいモジュールはwebkitwidgets. 2 番目の問題はフォーマットです。2 つの行が連結されているようです。したがって、これは機能するはずです:

QT += core gui
QT += webkitwidgets

注: プログラムを Qt4 と Qt5 の両方でコンパイルする必要がある場合は、webkitQt4 用に Qt5 用に追加して、条件付きを使用する必要がありますwebkitwidgets。しかし、これはおそらく趣味のプロジェクトにとっては問題ではなく、.pro実際に必要になるまでそのようなものでファイルを乱雑にする意味はありません (#ifdef両方をサポートしたい場合は、ソースの変更やコードの内容も必要になるため、そこには行かないでください)重要な要件でない限り)。


同じ2行連結の問題も並んでいるようTARGET = mozilabrwser TEMPLATE = appです。

于 2013-10-31T06:14:19.020 に答える