Сей, ребята, мне нужно поработать над проблемой с QT5 WebChannel,
На данный момент я пытаюсь переключать представления с помощью JavaScript.
К сожалению, у меня нет плана, как это делается. < /p>
class Backend : public QObject{
Q_OBJECT
public:
explicit Backend(QObject *parent = nullptr);
Q_INVOKABLE void getViewHtml(const QString &viewName, QJSValue callback);
};
//index.js
let currentView = "";
// Initialize WebChannel and bind backend
new QWebChannel(qt.webChannelTransport, function (channel) {
window.backend = channel.objects.backend;
console.log("[Frontend] WebChannel connected: backend object ready");
// Keyboard shortcuts
document.addEventListener("keydown", (event) => {
console.log("[Frontend] Key pressed:", event.key);
if (event.key === "F1") loadView("view1");
else if (event.key === "F2") loadView("view2");
else if (event.key === "F3") showSplash();
else if (event.key === "F4") showSplash();
});
showSplash();
});
function showSplash() {
const content = document.getElementById("mainContent");
if (!content) {
console.error("[Frontend] #mainContent not found");
return;
}
content.innerHTML = `
statmath
[img]qrc:/www/img/Logo_ifm-Unternehmensgruppe.svg.png[/img]
`;
setTimeout(() => {
document.querySelector(".absolute-text")?.classList.add("active");
document.querySelector(".logo-placeholder")?.classList.add("active");
}, 100);
currentView = "";
}
function loadView(viewName) {
if (!window.backend) {
console.error("[Frontend] backend not available");
return;
}
// Asynch with Callback!
backend.getViewHtml(viewName, function(html) {
console.log("DEBUG: HTML received:", html);
const content = document.getElementById("mainContent");
if (!content) {
console.error("[Frontend] #mainContent not found");
return;
}
content.innerHTML = html;
console.log("[Frontend] Loaded view:", viewName);
if (viewName === "view1" && typeof initView1 === "function") {
initView1();
} else if (viewName === "view2" && typeof initView2 === "function") {
initView2();
}
currentView = viewName;
});
}
< /code>
Мои ошибки, когда я нажимаю F1 или F2: < /p>
Нет кандидатов, не найденных для "getViewHtml" с 1 аргументами на бэкэнд объекта (0x4cb3d473940). JS: [initView2] элемент Canvas с id
view2 'не найден в DOM. Кандидатов не найдено для "getViewHtml" с 1
аргументами на Backend Object (0x4CB3D473940). JS: uncaught typeerror:
не может установить свойство «innerhtml» null < /p>
Итак, еще раз. Я не знаю, что такое хорошая практика. Использование JS, HTML с QT5. Было бы очень признателен, если кто -то сможет дать некоторые подсказки.
Заранее спасибо!
Подробнее здесь: https://stackoverflow.com/questions/796 ... javascript
Ошибка QT5 с асинхронной обратной функцией, Webengine, WebChannel, Javascript ⇐ Javascript
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Ошибка QT5 с асинхронной обратной функцией, Webengine, WebChannel, Javascript
Anonymous » » в форуме Html - 0 Ответы
- 2 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Перехват ошибок из асинхронной функции в блоке try..catch вне асинхронной функции
Anonymous » » в форуме Javascript - 0 Ответы
- 39 Просмотры
-
Последнее сообщение Anonymous
-