Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. QHelpEngine how-to

QHelpEngine how-to

Scheduled Pinned Locked Moved General and Desktop
22 Posts 5 Posters 18.9k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • W Offline
    W Offline
    willypuzzle
    wrote on last edited by
    #13

    It doesn't work anyway and error() leaves no error. This is the new code:
    @
    QHelpEngine* he = new QHelpEngine("./help.qhc");
    he->setupData();
    qDebug() << he->error();

    QHelpContentModel *contentModel = he->contentModel();
    QHelpContentWidget *contentWidget = he->contentWidget();
    QHelpIndexModel* indexModel = he->indexModel();
    QHelpIndexWidget* indexWidget = he->indexWidget();
    
    QSplitter* splitter = new QSplitter();
    splitter->addWidget(contentWidget);
    splitter->addWidget(indexWidget);
    
    contentWidget->setModel(contentModel);
    indexWidget->setModel(indexModel);
    
    splitter->show();
    

    @
    I took care to call program in the same help.qhc directory.

    1 Reply Last reply
    0
    • G Offline
      G Offline
      goetz
      wrote on last edited by
      #14

      Try it with an absolute path.

      For runtime you can use something like this:

      @
      QString helpPath = QApplication::applicationDirPath() + "/help_files/help.qhc";
      @

      Be aware, that this does not work on the Mac due to the applications bundles used there.

      http://www.catb.org/~esr/faqs/smart-questions.html

      1 Reply Last reply
      0
      • W Offline
        W Offline
        willypuzzle
        wrote on last edited by
        #15

        I followed your suggest and this is the new code:
        @
        QFileInfo fileInfo("help.qhc");
        if (fileInfo.exists()) {

            QHelpEngine* he = new QHelpEngine(fileInfo.absoluteFilePath());
            he->setupData();
            qDebug() << fileInfo.absoluteFilePath();
            qDebug() << he->error();
        
            QHelpContentModel *contentModel = he->contentModel();
            QHelpContentWidget *contentWidget = he->contentWidget();
            QHelpIndexModel* indexModel = he->indexModel();
            QHelpIndexWidget* indexWidget = he->indexWidget();
        
            QSplitter* splitter = new QSplitter();
            splitter->addWidget(contentWidget);
            splitter->addWidget(indexWidget);
        
            contentWidget->setModel(contentModel);
            indexWidget->setModel(indexModel);
        
            splitter->show();
        }else{
            qDebug() << "File doesn't exist";
        }
        

        @
        It outputs the correct absolute file name(see line 6) and there is no error.
        But it doesn't work....

        1 Reply Last reply
        0
        • G Offline
          G Offline
          goetz
          wrote on last edited by
          #16

          Do you have help.qch in that directory too? It's needed!

          http://www.catb.org/~esr/faqs/smart-questions.html

          1 Reply Last reply
          0
          • W Offline
            W Offline
            willypuzzle
            wrote on last edited by
            #17

            Yes, I checked it with
            @
            qDebug() << fileInfo.absoluteFilePath();
            @
            that returns the correct absolute file name of the file.

            1 Reply Last reply
            0
            • G Offline
              G Offline
              goetz
              wrote on last edited by
              #18

              Ahm... yo need both files:

              help.qhc
              help.qch

              I know, that suffixes are hard to differentiate!

              http://www.catb.org/~esr/faqs/smart-questions.html

              1 Reply Last reply
              0
              • W Offline
                W Offline
                willypuzzle
                wrote on last edited by
                #19

                Ahem sorry, I just tried to put that file in the same directory and it seems to work even though it has strange behavior. I have to study the situation...
                However thanks :)

                1 Reply Last reply
                0
                • I Offline
                  I Offline
                  iforce2d
                  wrote on last edited by
                  #20

                  Sorry to bring up an old thread but I have just spent an embarrassing number of hours on this issue myself. My problem and solution were exactly the same as willypuzzle's, namely that both the .qhc and .qch files must be present.

                  Looking at those files now, even with my tiny test help pages it's apparent from the file sizes that the .qch contains the actual content, but this is easily overlooked for new users dealing with the plethora of similar file extensions for the first time. Even when the .qch is missing the .qhc is found and loads successfully, and setupData() is successful too, which unfortunately draws attention away from the missing file being the source of the problem.

                  I think it would be good if it was made clearer in the documentation that both these files are necessary. Specifically, new users will likely arrive at this page as a first reference:
                  http://qt-project.org/doc/qt-4.8/qthelp-framework.html
                  From this I got the impression that the compressed help was merely a intermediate step, and the collection was the sole final outcome of the process.

                  1 Reply Last reply
                  0
                  • W Offline
                    W Offline
                    Woody
                    wrote on last edited by
                    #21

                    [SOLVED]

                    I don't know it is appropriate to ask the question here (if not please say so i'll start a new topic)

                    I have the problem with an error, it happens when calling the setCollectionFile() funtion of QHelpEngine.

                    @void HelperWindow::initialize()
                    {
                    HelperWindow::setWindowFlags(Qt::WindowStaysOnTopHint);

                    m_helpEngine->setCollectionFile&#40;QApplication::applicationDirPath(&#41; + "doc/athleticsmanager.qhc"&#41;;
                    m_helpEngine->setupData();
                    

                    }@

                    When i look deeper into the code behind this function i get this:
                    @if (fileName == collectionFile())
                    return;@

                    It's in the collectionFile() function, that only does
                    @return d->collectionHandler->collectionFile();@

                    , where i get "Segmentation Fault"

                    I dont really know what to do now, is there someone who can help me with this problem?

                    File not found. Nobody leave the room!

                    1 Reply Last reply
                    0
                    • T Offline
                      T Offline
                      tomuse
                      wrote on last edited by
                      #22

                      I encounter quietly the same problem:

                      • I am able to load my "doc.qhc" using the Qt Assistant and the content widget contains my documentation sections
                      • my "doc.qhc" and "doc.qch" are located in the same directory
                      • when building my help widget (see code below), no error is encountered
                      • my content widget is empty (the content model has 0 rows)
                        @
                        QFileInfo info("doc.qhc");
                        if (info.exists() == false)
                        {
                        qDebug << "Help file does not exist";
                        }
                        m_engine = new QHelpEngine(info.absoluteFilePath());
                        if (m_engine->setupData() == false)
                        {
                        qDebug << "Help engine setup failed";
                        }
                        QGridLayout* layout = new QGridLayout;
                        QSplitter* helpPanel = new QSplitter(Qt::Horizontal);
                        helpPanel->insertWidget(0, m_engine->contentWidget());
                        m_webView = new QWebView;
                        helpPanel->insertWidget(1, m_webView);
                        layout->addWidget(helpPanel, 0, 0);
                        setLayout(layout);
                        connect(m_engine->contentWidget(), SIGNAL(linkActivated(QUrl)), SLOT(SetHelpSource(QUrl)));
                        qDebug() << m_engine->contentModel()->rowCount());
                        @
                        I had a look on the Qt Assistant source code and it seems to do the same thing to load a collection file...or I missed something.
                        Any suggestion?
                        Thanks in advance for your help
                      1 Reply Last reply
                      0

                      • Login

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • Users
                      • Groups
                      • Search
                      • Get Qt Extensions
                      • Unsolved