QWebEngineView
에 페이지를로드하는 간단한 Qt 애플리케이션이 있습니다. url에 "static"이라는 단어가있는 모든 http 요청을 로컬 파일로 리디렉션하고 싶습니다. WebUrlRequestInterceptor
을 사용하여 interceptRequest
메소드를 다시 구현했습니다. 여기에 코드입니다 :QWebEngineUrlRequestInfo를 로컬 파일로 리디렉션하는 방법은 무엇입니까?
class MyWebUrlRequestInterceptor : public QWebEngineUrlRequestInterceptor
{
public:
void interceptRequest(QWebEngineUrlRequestInfo &info) {
if (info.requestUrl().toString().contains("static")) {
QString newUrl = QDir::currentPath() + info.requestUrl().toString().mid(21, info.requestUrl().toString().length());
qDebug() << "new url = " << newUrl;
info.redirect(QUrl::fromLocalFile(newUrl));
}
}
};
주요 기능에서 내가
MyWebUrlRequestInterceptor *wuri = new MyWebUrlRequestInterceptor();
QWebEngineProfile::defaultProfile()->setRequestInterceptor(wuri);
을했다 그리고
interceptRequest
은 잘 작동하는 것 같다,하지만 난 메시지가 나타납니다.
지역 자원
내가 온라인 검색 나는 많은 사람들이 내가 --disable-web-security
플래그를 추가해야한다는 말을로드 할 수 없습니다. 그래서 내 .pro
파일에서 수행 :
QMAKE_CXXFLAGS += --disable-web-security
그러나 작동하지 않는 것 같습니다. 내가 뭔가 잘못하고 있는거야? 다른 솔루션이 있습니까? 해결 방법으로 로컬 파일을 제공하고 Qt에서 리디렉션하도록 사용자 정의 프로토콜을 만들 수 있습니까?
나는 Qt는 5.9.1 및 QtCreator 4.3.1을 사용하고 있습니다.
감사합니다! 이해할 수 있을지 모르겠다. 페이지에서 이미지를 묻는다면'setHtml'을 통해 어떻게로드 할 수 있습니까? – madasionka
파일 내용이 html이 아닌 경우 제안 된대로 로컬 웹 서버를 사용하는 것이 좋습니다. 하나를 임베드하려고 시도하기 전에 노드 1 (https://expressjs.com)에 있다면 외부 솔루션을 사용하여이 솔루션을 테스트 할 수 있습니다. –