QWebView (qt jambi) 的多个实例

发布于 2024-08-14 08:02:35 字数 369 浏览 2 评论 0原文

再会, 如何在线程中使用 QWebView 和方法 load() ? 我已经在 main(!) 线程中创建了 QWebView,但是我不能将 load() 与 QWebView 一起使用(使用来自其他线程的信号/槽来执行此操作):

QWebView wv = new QWebView(); //好的 QUrl url = new QUrl("http://somesite.com/"); //好的 wv.load(url); //错误:QObject:无法为位于不同线程中的父级创建子级。

在 C++ 中它可以工作。请帮我!

ps抱歉我的英语

Good day,
How I can use QWebView with method load() in threads?
I have create QWebView in main(!) thread, but I can't use load() with QWebView (used signals/slots from other threads to do it):

QWebView wv = new QWebView(); //ok
QUrl url = new QUrl("http://somesite.com/"); //ok
wv.load(url); //ERROR: QObject: Cannot create children for a parent that is in a different thread.

In c++ it work. Please, help me!

p.s. sorry for my English

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

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

发布评论

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

评论(1

仙女 2024-08-21 08:02:35

我知道这是一个老问题,但对于其他感兴趣的人来说,问题是在不同的线程上创建子项。要封送回所属线程,请执行如下操作:

public void loadURL(String url) {  
    QApplication.invokeLater(new LoadURL(url));
}

private class LoadURL implements Runnable {
    private String url;
    public LoadURL(String url) {
        this.url = url;
    }
    public void run() {
        QNetworkRequest nreq = new QNetworkRequest(new QUrl(this.url));
        load(nreq);
    }
}

I know this is an old question but for anyone else interested, the problem is creating children on a different thread. To marshal back to the owning thread, do something like the following:

public void loadURL(String url) {  
    QApplication.invokeLater(new LoadURL(url));
}

private class LoadURL implements Runnable {
    private String url;
    public LoadURL(String url) {
        this.url = url;
    }
    public void run() {
        QNetworkRequest nreq = new QNetworkRequest(new QUrl(this.url));
        load(nreq);
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文