Load video (.mp4) and .css in Qt Help Assistant
-
Hi,
I'm trying to load some dynamic elements to my application help menu using Qt Help Project File. I have no problem loading the.html
files, but other files like.mp4
,.png
, and.css
are not likely taken into account.
So when I open my application, only a virgin version of my.html
files appears (no images, no videos, and no fonts defined in.css
, but the content is correct), Idk if I must do anything specific to load files (especially videos) with Qt (because it seems that's a bit tricky with Qt)
Anyway, my Qt Help Project File looks like this, knowing that the paths are correct, if anyone have an idea please help me out.
Thanks a lot guys!<?xml version="1.0" encoding="UTF-8"?> <QtHelpProject version="1.0"> <namespace>myapp.qt.help.fr</namespace> <virtualFolder>help</virtualFolder> <filterSection> <toc> <section title="Page" > <section title="Page 1" ref="page1.html"></section> <section title="Page 2" ref="page2.html"></section> </section> </toc> <keywords> <keyword name="Page 1" ref="page1.html"/> <keyword name="Page 2" ref="page1.html"/> </keywords> <files> <file>media/*.png</file> <file>media/*.jpg</file> <file>media/*.mp4</file> <file>style.css</file> <file>*.html</file> </files> <filterSection> </QtHelpProject>
-
-
add the Resource file .qrc in QT Project.
RESOURCES += gui.qrc
-
add Prefix (/gui) and file (style.css)in gui.qrc with help of Editor.
gui.qrc file text.
<RCC> <qtresource prefix="/gui"> <file>style.css</file> </qtresource> </RCC>
- You can use this function. You can call Applystyle function whenever you want to load the .css style.
void MainWindow::ApplyStyle() { #ifndef QT_NO_DEBUG QFile f(":/gui/style.css"); if(!f.open(QIODevice::ReadOnly)) return; QString newStyleSheet = f.readAll(); #ifndef QT_NO_DEBUG { QRegExp imageSource("(:/GUI)"); QString localSource("."); int offset = 0; while (-1 != (offset = imageSource.indexIn(newStyleSheet, offset))) { newStyleSheet.replace(offset, imageSource.cap(1).size(), localSource); offset += localSource.size(); } } #endif // change the .css file value w.r.t. to screen resolution if((ratio <1.0) && (ratio > 0) ) { QRegExp sizeRx("(\\d+)px"); int offset = 0; while (-1 != (offset = sizeRx.indexIn(newStyleSheet, offset))) { int val = sizeRx.cap(1).toInt(); int sizeOffset = sizeRx.cap(1).size(); if (val > 1) { val *= ratio; QString newSize = QString("%1").arg(val); newStyleSheet.replace(offset, sizeRx.cap(1).size(), newSize); sizeOffset = newSize.size(); } offset += sizeOffset; } } qobject_cast<QApplication *>(QApplication::instance())->setStyleSheet(newStyleSheet); f.close(); }
-
-
Hi Yash001,
Thanks a lot for your answer, I think this is the way to load.css
file to the whole application, right?What I wanted to do is to load elements to my help menu only, separated from the rest of the application (which I did with
.qhp
file above), the final goal is to load help menu with.qhc
file &QHelpEngine
class, like what is described here:
http://doc.qt.io/qt-5/qthelp-framework.html
http://doc.qt.io/qt-5/qthelpproject.html
http://doc.qt.io/qt-5/qhelpengine.htmlThe problem is the
<file></file>
tag doesn't seem to be properly loaded, since I cannot see any medias when the.html
files are called, neither the.css
format.Am I missing something at that point?
-
Hi,
I'm making a bit progression on my program.
In fact, I realize that my.qhc
file works great withQt Assistant
, which I try with this command:
assistant -collectionFile helpmenu.qhc
Every videos, images, css style, and fonts are properly loaded.However, in my application, when I loaded the same
helpmenu.qhc
withQHelpEngine
using:
QHelpEngine(const QString &collectionFile, QObject *parent = 0);
Not everything was properly loaded (images yes, but no videos, and still no.css
style), do I have to load it also on my.qrc
file?
Please, if someone have an idea, let me know.
Thanks -
@huy-cong I am trying to load my mp4 video into qt assistant, but I just get the message "Your browser does not support HTML video. ".
I am using Qt 5.13 and the html I am using to load the video is:
<video width="400" controls>
<source src="videos/mov_bbb.mp4" type="video/mp4">
<source src="videos/mov_bbb.ogg" type="video/ogg">
Your browser does not support HTML video.
</video>Can you tell me how you embedded your video in your .html file?
Thanks!