Приложение QT зависает при запуске в режиме отладки

Я попытался создать простое приложение на QT, в котором внешним интерфейсом является HTML и собственный внутренний интерфейс. Я использовал код из примеров QtWebView (QML) и QWebChannel, чтобы создать небольшую демонстрацию.

Если я начну сборку релиза приложения, все будет работать как положено, за исключением того, что вы не сможете отладить сборку релиза. Если я запускаю отладочную сборку, приложение запускается, а затем останавливается, как если бы была достигнута точка останова отладки (у меня не установлены точки останова), и после нажатия кнопки возобновить приложение зависает навсегда.

В настоящее время я использую машину Windows 7 x86 для разработки. Версия QT — 5.5.

Я загрузил демонстрационное приложение на свой диск Google: https://drive.google.com/file/d/0Byc0Zui_4XuxaUc5MmJlWlo0M28/view?usp=sharing

Любые идеи, почему отладочная версия не будет работать?

Изменить: вот мой код, как и просили.

TestSuite.pro

TEMPLATE = app

QT += qml quick webengine webchannel websockets
CONFIG += c++11

SOURCES += main.cpp \
shared/websocketclientwrapper.cpp \
shared/websockettransport.cpp \
Log.cpp

RESOURCES += qml.qrc

# Additional import path used to resolve QML modules in Qt Creator's code model
QML_IMPORT_PATH =

# Default rules for deployment.
include(deployment.pri)

HEADERS += \
shared/websocketclientwrapper.h \
shared/websockettransport.h \
Log.h

main.cpp

#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QtWebEngine/QtWebEngine>
#include <QWebSocketServer>
#include <QWebChannel>

// From the webchannel example
#include "shared/websocketclientwrapper.h"#include "shared/websockettransport.h"
// Simple class with 1 method "void logMessage(const QString &msg);" which writes a string to qDebug()
#include"Log.h"
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
QtWebEngine::initialize();

//setup WebSocket server
QWebSocketServer server(QStringLiteral("QWebChannelServer"), QWebSocketServer::NonSecureMode);
if (!server.listen(QHostAddress::LocalHost, 12344)) {
qFatal("Failed to open web socket server.");
return 1;
}

//wrap WebSocket clients in QWebChannelAbstractTransport objects
//see:qtwebchannel/examples/webchannel/standalone
WebSocketClientWrapper clientWrapper(&server);

//setup the channel and connect to WebSocket clients
QWebChannel channel;// Register Objects
Log l;
channel.registerObject("Log", &l);// Start Application
QObject::connect(&clientWrapper, &WebSocketClientWrapper::clientConnected,
&channel, &QWebChannel::connectTo);

QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));

return app.exec();
}

main.qml

import QtQuick 2.0
import QtQuick.Window 2.2
import QtWebEngine 1.1

Window {
width: 1280
height: 720
visible: true
WebEngineView {
id: webview
url: "qrc:/index.html"anchors.fill: parent
}
}

index.html

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>m2suite</title>
<script type="text/javascript" src="qtwebchannel/qwebchannel.js"></script>
<script type="text/javascript" src="script/main.js"></script>
</head>
<body>
<a onclick="Log.logMessage('test')">Log.sendMessage</a><br>
</body>
</html>

script.js

var Log;

var socket = new WebSocket("ws://127.0.0.1:12344/");

socket.onopen=function(){
var c = new QWebChannel(socket, function(channel) {
//connection to server succeeded, objectsavailablevia:
Log = channel.objects.Log;
});
}

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]