在Qt中将javascript插入WebView时,GUI冻结

时间:2014-05-27 13:07:22

标签: c++ qt

我有一个小型聊天应用程序,它使用QTcpSocket与我的服务器进行通信。

我的服务器向我的Qt聊天客户端发送JSON命令,我在readyRead()内解析。当接收命令newUser时,执行以下方法。由于某种原因,下面的方法导致我的应用程序冻结在某些机器上。这意味着它会使GUI无法响应。然后,用户必须最小化并最大化应用程序,以使其变得响应。

任何可能导致此问题的想法?

void MainWindow::addUser(QString channelID, QString visitorName) {

    int exists = 0;
    if (onlineUsers.contains(channelID)) {
        exists = 1;
    }    

    // Add the user to our QWebView
    ui->allVisitorsWeb->page()->mainFrame()->evaluateJavaScript("$('#allUsers tr:last').after('<tr id=" + channelID + "><td>" + visitorName + "</td></tr>'); undefined");

    // Add to active chats QStringList
    onlineUsers << channelID;

    // Display notification
    QSettings settings("MyApp", "App");
    settings.beginGroup("aSettings");
    if (settings.value("visitorNotification").toString() == "true") {
        //displayNotification(visitorName, "Has entered", channelID);
    }
    settings.endGroup();       

    // Added to fix freeze
    QCoreApplication::processEvents();
}

0 个答案:

没有答案