Ошибка QT5 с асинхронной обратной функцией, Webengine, WebChannel, JavascriptJavascript

Форум по Javascript
Ответить Пред. темаСлед. тема
Anonymous
 Ошибка QT5 с асинхронной обратной функцией, Webengine, WebChannel, Javascript

Сообщение Anonymous »

Сей, ребята, мне нужно поработать над проблемой с 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Javascript»