我有一个小型聊天应用程序,它使用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();
}