-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmainwindow.h
More file actions
93 lines (78 loc) · 2.79 KB
/
mainwindow.h
File metadata and controls
93 lines (78 loc) · 2.79 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include "qlocalsocket.h"
#include "qwebenginepage.h"
#include <QMainWindow>
#include <QtCore>
#include <QFile>
#include <QLocalServer>
#include <QWebEngineProfile>
#include <QDesktopServices>
namespace Ui {
class UiInstance : public QObject {
Q_OBJECT
public:
UiInstance(QWebEnginePage* page, QString port) : m_page(page) {
m_server.listen("Olop-threads-"+port);
qDebug() << "Olop-threads-"+port;
connect(&m_server, &QLocalServer::newConnection, this, &UiInstance::handleNewConnection);
}
private slots:
void handleNewConnection() {
QLocalSocket* clientSocket = m_server.nextPendingConnection();
connect(clientSocket, &QLocalSocket::readyRead, [this, clientSocket]() {
QString script = QString::fromUtf8(clientSocket->readAll());
if (script.startsWith("1")) { // vérifier la condition de la réponse
script = script.mid(1); // retirez le "1" au début
m_page->runJavaScript(script);
}
clientSocket->disconnectFromServer();
});
}
private:
QLocalServer m_server;
QWebEnginePage* m_page;
};
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr, QString url="");
~MainWindow();
Ui::MainWindow *ui;
private slots:
void on_actionQuitter_triggered();
void resizeEvent(QResizeEvent* event);
void onLoadingHtmlFinished(bool ok, const QString &url);
private:
Ui::UiInstance *uiInstance;
};
class CustomWebEnginePage : public QWebEnginePage
{
Q_OBJECT
public:
CustomWebEnginePage(QObject* parent = nullptr) : QWebEnginePage(parent) {}
signals:
void requestCreateWindow(QWebEnginePage::WebWindowType type); // Ajoutez ce signal
void customJavaScriptConsoleMessage(QWebEnginePage::JavaScriptConsoleMessageLevel level, const QString &message, int lineNumber, const QString &sourceID);
void urlRequested(const QUrl& url);
protected:
virtual void javaScriptConsoleMessage(QWebEnginePage::JavaScriptConsoleMessageLevel level, const QString &message, int lineNumber, const QString &sourceID) override
{
emit customJavaScriptConsoleMessage(level, message, lineNumber, sourceID);
}
virtual QWebEnginePage* createWindow(WebWindowType type) override {
if (type == QWebEnginePage::WebBrowserTab || type == QWebEnginePage::WebBrowserWindow) {
CustomWebEnginePage* newPage = new CustomWebEnginePage(this);
connect(newPage, &QWebEnginePage::urlChanged, this, [this, newPage](const QUrl& url) {
emit urlRequested(url);
newPage->deleteLater();
});
return newPage;
}
return nullptr;
}
};
#endif // MAINWINDOW_H