Sphinx Integration in Qt












1















I would like to integrate Sphinx documentation functionality to help with my Qt project. However, when including the HTML files for Sphinx, the formatting appears differently and no file links work. For example:



QFile file("/home/user1/project/Sphinx/build/html/intro.html");
if (!file.open(QIODevice::Readonly))
qDebug() << "Didn't open file";
QTextStream in(&file);
ui->textBrowser->setText(in.readAll());


Error: QTextBrowser: No document for _sources/intro.txt



This will cause the textBrowser to open the correct file, but will not end up displaying the page with the correct HTML coding, and will not follow the links even though those HTML files are contained in the same path (as I have copied the entire Sphinx project into the Qt project).



Is there some way to package the entire Sphinx project so that inclusion of multiple files is unnecessary or is the multiple file inclusion the way to go and I'm just handling it incorrectly?










share|improve this question

























  • Could you share your Sphinx project through github?

    – eyllanesc
    Nov 21 '18 at 4:25











  • At this point it's the basic quickstart tutorial that Sphinx provides, with a single added page ('Intro') to test linking functionality

    – Mister David
    Nov 21 '18 at 15:30











  • you would save us a lot of time if you provide an example. :-)

    – eyllanesc
    Nov 21 '18 at 15:31






  • 1





    That's valid :) A full copy of the code has been added at: github.com/NotFakeJesus/QtSphinxIntegration/tree/master/…

    – Mister David
    Nov 21 '18 at 15:51
















1















I would like to integrate Sphinx documentation functionality to help with my Qt project. However, when including the HTML files for Sphinx, the formatting appears differently and no file links work. For example:



QFile file("/home/user1/project/Sphinx/build/html/intro.html");
if (!file.open(QIODevice::Readonly))
qDebug() << "Didn't open file";
QTextStream in(&file);
ui->textBrowser->setText(in.readAll());


Error: QTextBrowser: No document for _sources/intro.txt



This will cause the textBrowser to open the correct file, but will not end up displaying the page with the correct HTML coding, and will not follow the links even though those HTML files are contained in the same path (as I have copied the entire Sphinx project into the Qt project).



Is there some way to package the entire Sphinx project so that inclusion of multiple files is unnecessary or is the multiple file inclusion the way to go and I'm just handling it incorrectly?










share|improve this question

























  • Could you share your Sphinx project through github?

    – eyllanesc
    Nov 21 '18 at 4:25











  • At this point it's the basic quickstart tutorial that Sphinx provides, with a single added page ('Intro') to test linking functionality

    – Mister David
    Nov 21 '18 at 15:30











  • you would save us a lot of time if you provide an example. :-)

    – eyllanesc
    Nov 21 '18 at 15:31






  • 1





    That's valid :) A full copy of the code has been added at: github.com/NotFakeJesus/QtSphinxIntegration/tree/master/…

    – Mister David
    Nov 21 '18 at 15:51














1












1








1








I would like to integrate Sphinx documentation functionality to help with my Qt project. However, when including the HTML files for Sphinx, the formatting appears differently and no file links work. For example:



QFile file("/home/user1/project/Sphinx/build/html/intro.html");
if (!file.open(QIODevice::Readonly))
qDebug() << "Didn't open file";
QTextStream in(&file);
ui->textBrowser->setText(in.readAll());


Error: QTextBrowser: No document for _sources/intro.txt



This will cause the textBrowser to open the correct file, but will not end up displaying the page with the correct HTML coding, and will not follow the links even though those HTML files are contained in the same path (as I have copied the entire Sphinx project into the Qt project).



Is there some way to package the entire Sphinx project so that inclusion of multiple files is unnecessary or is the multiple file inclusion the way to go and I'm just handling it incorrectly?










share|improve this question
















I would like to integrate Sphinx documentation functionality to help with my Qt project. However, when including the HTML files for Sphinx, the formatting appears differently and no file links work. For example:



QFile file("/home/user1/project/Sphinx/build/html/intro.html");
if (!file.open(QIODevice::Readonly))
qDebug() << "Didn't open file";
QTextStream in(&file);
ui->textBrowser->setText(in.readAll());


Error: QTextBrowser: No document for _sources/intro.txt



This will cause the textBrowser to open the correct file, but will not end up displaying the page with the correct HTML coding, and will not follow the links even though those HTML files are contained in the same path (as I have copied the entire Sphinx project into the Qt project).



Is there some way to package the entire Sphinx project so that inclusion of multiple files is unnecessary or is the multiple file inclusion the way to go and I'm just handling it incorrectly?







html qt python-sphinx






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 21 '18 at 5:51









mzjn

31.7k666154




31.7k666154










asked Nov 21 '18 at 0:46









Mister DavidMister David

137




137













  • Could you share your Sphinx project through github?

    – eyllanesc
    Nov 21 '18 at 4:25











  • At this point it's the basic quickstart tutorial that Sphinx provides, with a single added page ('Intro') to test linking functionality

    – Mister David
    Nov 21 '18 at 15:30











  • you would save us a lot of time if you provide an example. :-)

    – eyllanesc
    Nov 21 '18 at 15:31






  • 1





    That's valid :) A full copy of the code has been added at: github.com/NotFakeJesus/QtSphinxIntegration/tree/master/…

    – Mister David
    Nov 21 '18 at 15:51



















  • Could you share your Sphinx project through github?

    – eyllanesc
    Nov 21 '18 at 4:25











  • At this point it's the basic quickstart tutorial that Sphinx provides, with a single added page ('Intro') to test linking functionality

    – Mister David
    Nov 21 '18 at 15:30











  • you would save us a lot of time if you provide an example. :-)

    – eyllanesc
    Nov 21 '18 at 15:31






  • 1





    That's valid :) A full copy of the code has been added at: github.com/NotFakeJesus/QtSphinxIntegration/tree/master/…

    – Mister David
    Nov 21 '18 at 15:51

















Could you share your Sphinx project through github?

– eyllanesc
Nov 21 '18 at 4:25





Could you share your Sphinx project through github?

– eyllanesc
Nov 21 '18 at 4:25













At this point it's the basic quickstart tutorial that Sphinx provides, with a single added page ('Intro') to test linking functionality

– Mister David
Nov 21 '18 at 15:30





At this point it's the basic quickstart tutorial that Sphinx provides, with a single added page ('Intro') to test linking functionality

– Mister David
Nov 21 '18 at 15:30













you would save us a lot of time if you provide an example. :-)

– eyllanesc
Nov 21 '18 at 15:31





you would save us a lot of time if you provide an example. :-)

– eyllanesc
Nov 21 '18 at 15:31




1




1





That's valid :) A full copy of the code has been added at: github.com/NotFakeJesus/QtSphinxIntegration/tree/master/…

– Mister David
Nov 21 '18 at 15:51





That's valid :) A full copy of the code has been added at: github.com/NotFakeJesus/QtSphinxIntegration/tree/master/…

– Mister David
Nov 21 '18 at 15:51












1 Answer
1






active

oldest

votes


















0














Instead of reading all text and setting it with setText() you must use the setSource() method and pass it to the QUrl using the QUr::fromLocalFile() method.



main.cpp



#include <QtWidgets>

class Widget: public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent=nullptr):
QWidget(parent),
m_text_browser(new QTextBrowser)
{
m_lineedit = new QLineEdit;
auto button = new QPushButton("Load");

auto lay = new QVBoxLayout{this};
auto hlay = new QHBoxLayout;
lay->addLayout(hlay);
hlay->addWidget(m_lineedit);
hlay->addWidget(button);
lay->addWidget(m_text_browser);

connect(button, &QPushButton::clicked, this, &Widget::on_clicked);
}
private slots:
void on_clicked(){
QString fileName = QFileDialog::getOpenFileName(this,
tr("Open Image"),
QDir::homePath(),
tr("HTML Files (*.html)"));
m_lineedit->setText(fileName);
m_text_browser->setSource(QUrl::fromLocalFile(fileName));
}
private:
QTextBrowser *m_text_browser;
QLineEdit *m_lineedit;
};

int main(int argc, char *argv)
{
QApplication a(argc, argv);
Widget w;
w.showMaximized();
return a.exec();
}

#include "main.moc"





share|improve this answer
























  • Wonderful! Thanks a bunch it really helped out

    – Mister David
    Nov 21 '18 at 21:16











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53403769%2fsphinx-integration-in-qt%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









0














Instead of reading all text and setting it with setText() you must use the setSource() method and pass it to the QUrl using the QUr::fromLocalFile() method.



main.cpp



#include <QtWidgets>

class Widget: public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent=nullptr):
QWidget(parent),
m_text_browser(new QTextBrowser)
{
m_lineedit = new QLineEdit;
auto button = new QPushButton("Load");

auto lay = new QVBoxLayout{this};
auto hlay = new QHBoxLayout;
lay->addLayout(hlay);
hlay->addWidget(m_lineedit);
hlay->addWidget(button);
lay->addWidget(m_text_browser);

connect(button, &QPushButton::clicked, this, &Widget::on_clicked);
}
private slots:
void on_clicked(){
QString fileName = QFileDialog::getOpenFileName(this,
tr("Open Image"),
QDir::homePath(),
tr("HTML Files (*.html)"));
m_lineedit->setText(fileName);
m_text_browser->setSource(QUrl::fromLocalFile(fileName));
}
private:
QTextBrowser *m_text_browser;
QLineEdit *m_lineedit;
};

int main(int argc, char *argv)
{
QApplication a(argc, argv);
Widget w;
w.showMaximized();
return a.exec();
}

#include "main.moc"





share|improve this answer
























  • Wonderful! Thanks a bunch it really helped out

    – Mister David
    Nov 21 '18 at 21:16
















0














Instead of reading all text and setting it with setText() you must use the setSource() method and pass it to the QUrl using the QUr::fromLocalFile() method.



main.cpp



#include <QtWidgets>

class Widget: public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent=nullptr):
QWidget(parent),
m_text_browser(new QTextBrowser)
{
m_lineedit = new QLineEdit;
auto button = new QPushButton("Load");

auto lay = new QVBoxLayout{this};
auto hlay = new QHBoxLayout;
lay->addLayout(hlay);
hlay->addWidget(m_lineedit);
hlay->addWidget(button);
lay->addWidget(m_text_browser);

connect(button, &QPushButton::clicked, this, &Widget::on_clicked);
}
private slots:
void on_clicked(){
QString fileName = QFileDialog::getOpenFileName(this,
tr("Open Image"),
QDir::homePath(),
tr("HTML Files (*.html)"));
m_lineedit->setText(fileName);
m_text_browser->setSource(QUrl::fromLocalFile(fileName));
}
private:
QTextBrowser *m_text_browser;
QLineEdit *m_lineedit;
};

int main(int argc, char *argv)
{
QApplication a(argc, argv);
Widget w;
w.showMaximized();
return a.exec();
}

#include "main.moc"





share|improve this answer
























  • Wonderful! Thanks a bunch it really helped out

    – Mister David
    Nov 21 '18 at 21:16














0












0








0







Instead of reading all text and setting it with setText() you must use the setSource() method and pass it to the QUrl using the QUr::fromLocalFile() method.



main.cpp



#include <QtWidgets>

class Widget: public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent=nullptr):
QWidget(parent),
m_text_browser(new QTextBrowser)
{
m_lineedit = new QLineEdit;
auto button = new QPushButton("Load");

auto lay = new QVBoxLayout{this};
auto hlay = new QHBoxLayout;
lay->addLayout(hlay);
hlay->addWidget(m_lineedit);
hlay->addWidget(button);
lay->addWidget(m_text_browser);

connect(button, &QPushButton::clicked, this, &Widget::on_clicked);
}
private slots:
void on_clicked(){
QString fileName = QFileDialog::getOpenFileName(this,
tr("Open Image"),
QDir::homePath(),
tr("HTML Files (*.html)"));
m_lineedit->setText(fileName);
m_text_browser->setSource(QUrl::fromLocalFile(fileName));
}
private:
QTextBrowser *m_text_browser;
QLineEdit *m_lineedit;
};

int main(int argc, char *argv)
{
QApplication a(argc, argv);
Widget w;
w.showMaximized();
return a.exec();
}

#include "main.moc"





share|improve this answer













Instead of reading all text and setting it with setText() you must use the setSource() method and pass it to the QUrl using the QUr::fromLocalFile() method.



main.cpp



#include <QtWidgets>

class Widget: public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent=nullptr):
QWidget(parent),
m_text_browser(new QTextBrowser)
{
m_lineedit = new QLineEdit;
auto button = new QPushButton("Load");

auto lay = new QVBoxLayout{this};
auto hlay = new QHBoxLayout;
lay->addLayout(hlay);
hlay->addWidget(m_lineedit);
hlay->addWidget(button);
lay->addWidget(m_text_browser);

connect(button, &QPushButton::clicked, this, &Widget::on_clicked);
}
private slots:
void on_clicked(){
QString fileName = QFileDialog::getOpenFileName(this,
tr("Open Image"),
QDir::homePath(),
tr("HTML Files (*.html)"));
m_lineedit->setText(fileName);
m_text_browser->setSource(QUrl::fromLocalFile(fileName));
}
private:
QTextBrowser *m_text_browser;
QLineEdit *m_lineedit;
};

int main(int argc, char *argv)
{
QApplication a(argc, argv);
Widget w;
w.showMaximized();
return a.exec();
}

#include "main.moc"






share|improve this answer












share|improve this answer



share|improve this answer










answered Nov 21 '18 at 18:27









eyllanesceyllanesc

76.7k103156




76.7k103156













  • Wonderful! Thanks a bunch it really helped out

    – Mister David
    Nov 21 '18 at 21:16



















  • Wonderful! Thanks a bunch it really helped out

    – Mister David
    Nov 21 '18 at 21:16

















Wonderful! Thanks a bunch it really helped out

– Mister David
Nov 21 '18 at 21:16





Wonderful! Thanks a bunch it really helped out

– Mister David
Nov 21 '18 at 21:16


















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53403769%2fsphinx-integration-in-qt%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

If I really need a card on my start hand, how many mulligans make sense? [duplicate]

Alcedinidae

Can an atomic nucleus contain both particles and antiparticles? [duplicate]