QWebView - QWidget:必须在 QPaintDevice 错误之前构造 QApplication

发布于 2024-12-28 03:13:23 字数 747 浏览 1 评论 0原文

每当我尝试创建新的 QWebView 时,构建后错误为

QWidget: Must Construction a QApplication before a QPaintDevice

为什么会发生这种情况?

是的,我确实将 QT += webkit 添加到 pro 文件中,它在这里说

In qwtconfig.pri

CONFIG += QwtDll 这行必须是 ->;

#CONFIG += QwtDll

qtwconfig.pri 在哪里?

FWI 我正在静态构建

这里是 main()

#include "MyWidget.h"
#include <QPlastiqueStyle>
#include <QtPlugin>
#include <QtWebKit/QWebView>
Q_IMPORT_PLUGIN(qico)


int main(int argc, char *argv[])
{

QApplication app(argc, argv);

app.setStyle(new QPlastiqueStyle);
app.setFont(QFont("Calibri"));
MyWidget widget;
widget.show();

QWebView w;
    w.show();

return app.exec();

}

Whenever I try to create a new QWebView, the post-build error is

QWidget: Must construct a QApplication before a QPaintDevice

why is this happening?

Yes, i did add QT += webkit to the pro file, and it says here

In qwtconfig.pri

CONFIG += QwtDll this line must be ->

#CONFIG += QwtDll

where is qtwconfig.pri?

FWI i'm on a static build

Here is main()

#include "MyWidget.h"
#include <QPlastiqueStyle>
#include <QtPlugin>
#include <QtWebKit/QWebView>
Q_IMPORT_PLUGIN(qico)


int main(int argc, char *argv[])
{

QApplication app(argc, argv);

app.setStyle(new QPlastiqueStyle);
app.setFont(QFont("Calibri"));
MyWidget widget;
widget.show();

QWebView w;
    w.show();

return app.exec();

}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

醉态萌生 2025-01-04 03:13:24

文档提到 Webkit 可能无法作为静态库工作。

平台和编译器注释页面:

仅支持将 WebKit 作为动态构建的库。不支持静态链接。

尝试使用动态链接代替。

The documentation mentions Webkit may not work as a static library.

From the Platform and Compiler Notes page:

WebKit is only supported as a dynamically built library. Static linkage is not supported.

Try dynamic linking instead.

甜味拾荒者 2025-01-04 03:13:24

您需要实例化一个 QApplication 对象才能使用任何基于小部件的类,并且必须首先创建它,因此您的 main() 应该如下所示。

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QWebView w;
    w.show();    
    return a.exec();
}

You need to instantiate a QApplication object in order to use any widget based class and it must be created first, so your main() should look something like this..

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QWebView w;
    w.show();    
    return a.exec();
}
故人爱我别走 2025-01-04 03:13:24

假设您正在创建一个QApplication,请确保您没有静态分配该对象。

不要这样做

QWebView w;
int main(int argc, char *argv[])
{
  QApplication a(argc, argv);
  w.show();
  return a.exec();
}

Assuming you are creating a QApplication, make sure you're not statically allocating the object.

Don't do this

QWebView w;
int main(int argc, char *argv[])
{
  QApplication a(argc, argv);
  w.show();
  return a.exec();
}
她比我温柔 2025-01-04 03:13:24

此错误的另一个来源可能是链接到错误版本的 Qt 库 - 调试版本的发行版本,反之亦然。

Another source of this error can be linking to the wrong version of a Qt library - a release version for a debug build or vice versa.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文