加载(QUrl(“http://facebook.com")); v3->加载(QUrl(“http://bing.com")); v4->加载(QUrl(“http://twitter.com")); 连接(v1,信号(loadFinished(bool)),此,插槽(finished(bool))); 连接(v2,信号(loadFinished(bool)),此,插槽(finished(bool))); 连接(v3,信号(loadFinished(bool)),此,插槽(finished(bool)); 连接(v4,信号(loadFinished(bool)),此,插槽(finished(bool))); } 公众时段: void MyWebview::finished(bool ok){/[SLOT] 开关(/**/){ case/*如果是v1*/: 断开(v1,信号(loadFinished(bool)),此,插槽(finished(bool))); 打破 case/*如果是v2*/: 断开(v2,信号(loadFinished(bool)),此,插槽(finished(bool))); 打破 case/*如果是v3*/: 断开(v3,信号(loadFinished(bool)),此,插槽(finished(bool)); 打破 case/*如果是v3*/: 断开(v4,信号(loadFinished(bool)),此,插槽(finished(bool)); 打破 } //做点什么。。 } },c++,c,multithreading,qt,qwebview,C++,C,Multithreading,Qt,Qwebview" /> 加载(QUrl(“http://facebook.com")); v3->加载(QUrl(“http://bing.com")); v4->加载(QUrl(“http://twitter.com")); 连接(v1,信号(loadFinished(bool)),此,插槽(finished(bool))); 连接(v2,信号(loadFinished(bool)),此,插槽(finished(bool))); 连接(v3,信号(loadFinished(bool)),此,插槽(finished(bool)); 连接(v4,信号(loadFinished(bool)),此,插槽(finished(bool))); } 公众时段: void MyWebview::finished(bool ok){/[SLOT] 开关(/**/){ case/*如果是v1*/: 断开(v1,信号(loadFinished(bool)),此,插槽(finished(bool))); 打破 case/*如果是v2*/: 断开(v2,信号(loadFinished(bool)),此,插槽(finished(bool))); 打破 case/*如果是v3*/: 断开(v3,信号(loadFinished(bool)),此,插槽(finished(bool)); 打破 case/*如果是v3*/: 断开(v4,信号(loadFinished(bool)),此,插槽(finished(bool)); 打破 } //做点什么。。 } },c++,c,multithreading,qt,qwebview,C++,C,Multithreading,Qt,Qwebview" />

C++ 使用单插槽处理Qt多个webview #包括 #包括 类MyWebview:公共QObject{ Q_对象 私人: QWebView*v1、*v2、*v3、*v4; 公众: MyWebview(){ v1=新的QWebView(0); v2=新的QWebView(0); v3=新的QWebView(0); v4=新的QWebView(0); v1->加载(QUrl(“http://google.com")); v2->加载(QUrl(“http://facebook.com")); v3->加载(QUrl(“http://bing.com")); v4->加载(QUrl(“http://twitter.com")); 连接(v1,信号(loadFinished(bool)),此,插槽(finished(bool))); 连接(v2,信号(loadFinished(bool)),此,插槽(finished(bool))); 连接(v3,信号(loadFinished(bool)),此,插槽(finished(bool)); 连接(v4,信号(loadFinished(bool)),此,插槽(finished(bool))); } 公众时段: void MyWebview::finished(bool ok){/[SLOT] 开关(/**/){ case/*如果是v1*/: 断开(v1,信号(loadFinished(bool)),此,插槽(finished(bool))); 打破 case/*如果是v2*/: 断开(v2,信号(loadFinished(bool)),此,插槽(finished(bool))); 打破 case/*如果是v3*/: 断开(v3,信号(loadFinished(bool)),此,插槽(finished(bool)); 打破 case/*如果是v3*/: 断开(v4,信号(loadFinished(bool)),此,插槽(finished(bool)); 打破 } //做点什么。。 } }

C++ 使用单插槽处理Qt多个webview #包括 #包括 类MyWebview:公共QObject{ Q_对象 私人: QWebView*v1、*v2、*v3、*v4; 公众: MyWebview(){ v1=新的QWebView(0); v2=新的QWebView(0); v3=新的QWebView(0); v4=新的QWebView(0); v1->加载(QUrl(“http://google.com")); v2->加载(QUrl(“http://facebook.com")); v3->加载(QUrl(“http://bing.com")); v4->加载(QUrl(“http://twitter.com")); 连接(v1,信号(loadFinished(bool)),此,插槽(finished(bool))); 连接(v2,信号(loadFinished(bool)),此,插槽(finished(bool))); 连接(v3,信号(loadFinished(bool)),此,插槽(finished(bool)); 连接(v4,信号(loadFinished(bool)),此,插槽(finished(bool))); } 公众时段: void MyWebview::finished(bool ok){/[SLOT] 开关(/**/){ case/*如果是v1*/: 断开(v1,信号(loadFinished(bool)),此,插槽(finished(bool))); 打破 case/*如果是v2*/: 断开(v2,信号(loadFinished(bool)),此,插槽(finished(bool))); 打破 case/*如果是v3*/: 断开(v3,信号(loadFinished(bool)),此,插槽(finished(bool)); 打破 case/*如果是v3*/: 断开(v4,信号(loadFinished(bool)),此,插槽(finished(bool)); 打破 } //做点什么。。 } },c++,c,multithreading,qt,qwebview,C++,C,Multithreading,Qt,Qwebview,如何解决这种情况?谢谢。请使用一个。它允许您识别信号的发送者。有QObject::sender(),但更好的方法是使用类似@Anthony建议的QSignalMapper。 #include <QWebView> #include <QObject> class MyWebview : public QObject { Q_OBJECT private: QWebView *v1, *v2, *v3, *v4; public: MyWebv

如何解决这种情况?谢谢。

请使用一个。它允许您识别信号的发送者。

QObject::sender()
,但更好的方法是使用类似@Anthony建议的QSignalMapper。
#include <QWebView>
#include <QObject>

class MyWebview  : public QObject {
    Q_OBJECT

private:
    QWebView *v1, *v2, *v3, *v4;

public:
    MyWebview() {
        v1 = new QWebView(0);
        v2 = new QWebView(0);
        v3 = new QWebView(0);
        v4 = new QWebView(0);

        v1->load(QUrl("http://google.com"));
        v2->load(QUrl("http://facebook.com"));
        v3->load(QUrl("http://bing.com"));
        v4->load(QUrl("http://twitter.com"));

        connect(v1, SIGNAL(loadFinished(bool)), this, SLOT(finished(bool)));
        connect(v2, SIGNAL(loadFinished(bool)), this, SLOT(finished(bool)));
        connect(v3, SIGNAL(loadFinished(bool)), this, SLOT(finished(bool)));
        connect(v4, SIGNAL(loadFinished(bool)), this, SLOT(finished(bool)));
    }

public slots:
    void    MyWebview::finished(bool ok)    {   // [ SLOT ]
        switch( /**/ ) {
            case /*if it is v1*/:
            disconnect(v1, SIGNAL(loadFinished(bool)), this, SLOT(finished(bool)));
            break;

        case /*if it is v2*/:
            disconnect(v2, SIGNAL(loadFinished(bool)), this, SLOT(finished(bool)));
            break;

        case /*if it is v3*/:
            disconnect(v3, SIGNAL(loadFinished(bool)), this, SLOT(finished(bool)));
            break;

        case /*if it is v3*/:
            disconnect(v4, SIGNAL(loadFinished(bool)), this, SLOT(finished(bool)));
            break;
        }

        // do something..
    }
}