Russian Qt Forum

Qt => Общие вопросы => Тема начата: eldar85 от Январь 14, 2011, 00:56



Название: создание help для программ
Отправлено: eldar85 от Январь 14, 2011, 00:56
Хочу сделать окно помощи для программки. Сделал пока простенькую, просто открывается окно QWidget в нем пара кнопок и QTextBrowser и в нем написана инфа как пользоваться, но это выглядит так убого.
 Хочется сделать красивое окошечько с сылками в QTextBrowserе чтобы нажимая ссылку открывалось следующая страничка, в общем что то похожее на Qt Accistent.

Создается окно:

Код:
    QWidget* widget = new QWidget/*(0, Qt::FramelessWindowHint)*/;

    
    widget->setMinimumSize(700, 500);
    
    QTextBrowser* text = new QTextBrowser;
    QPushButton* buttonForward = new QPushButton(">>");
    QPushButton* buttonBack = new QPushButton("<<");
    QPushButton* buttonHome = new QPushButton("Home");
    QHBoxLayout* layoutH = new QHBoxLayout;
    QVBoxLayout* layoutV = new QVBoxLayout;
    
    layoutH->addWidget(buttonBack);
    layoutH->addWidget(buttonHome);
    layoutH->addWidget(buttonForward);
    layoutH->addStretch();
      
    layoutV->addWidget(text);
    layoutV->addLayout(layoutH);
    
    widget->setLayout(layoutV);
    widget->setWindowTitle(tr("Описание работы программы"));
    widget->setWindowIcon(QIcon( ":/images/help.png" ));

    text->setStyleSheet( "background: silver" );

   widget->show();

....
}


а вот дальше как из документа воткнуть в QTextBrowser HTML(его почти не знаю, точнее немного знаю, но ссылку активную не могу сделать имено в QTextBrowsere) и сделать активные ссылочки (вообще не знаю как их делать), ну и конечно чтобы по нажатию этой ссылки открывался другой документ в QTextBrowsere.

Если не сложно товарищи профессионалы то малюсинький примерчик.

вот то что я надыбал, но у меня не получилось это реализовать.

http://cgui.ru/gui292.htm (http://cgui.ru/gui292.htm)

по идее мне бы пример этот имено HTML, то можно было бы и так сделать как в том примере http://cgui.ru/gui292.htm (http://cgui.ru/gui292.htm)


Название: Re: создание help для программ
Отправлено: eldar85 от Январь 14, 2011, 02:24
)) вроде получилось, подсмотрел в исходниках QAccistenta.
Создаем несколько файлов, к примеру основной index.html - затем в него подобный HTML код

Код:
<ul>
   <li><a href="findfile.html">Find File</a></li>
            <ul>
                <li><a href="filedialog.html">File Dialog</a></li>
                <li><a href="wildcardmatching.html">WildCard Matching</a></li>
                <li><a href="browse.html">Browse</a></li>
            </ul>
   <li><a href="openfile.html">Open File</a></li>
</ul>

ну и само собой вот эти файлики по контексту
indfile.html
filedialog.html
wildcardmatching.html
browse.html
openfile.html

и все отлично работает. Добавляем конекты:
Код:
...
    connect(buttonBack, SIGNAL(clicked()), text, SLOT(backward()));
    connect(buttonForward, SIGNAL(clicked()), text, SLOT(forward()));
    connect(buttonHome, SIGNAL(clicked()), text, SLOT(home()));

    connect(text, SIGNAL(backwardAvailable(bool)), buttonBack, SLOT(setEnabled(bool)));
    connect(text, SIGNAL(forwardAvailable(bool)), buttonForward, SLOT(setEnabled(bool)));

    connect(text, SIGNAL(sourceChanged(QUrl)), widget, SLOT(update()));
...


Название: Re: создание help для программ
Отправлено: eldar85 от Январь 14, 2011, 02:52
Вот только еще бы одну вещь хотел узнать, к примеру у меня в QTextBrowser е есть ссылки на какие то файлы, но мне нужно еще чтобы были ссылки запускающие веб браузер и открывающие сайт какой я укажу. Кто знает как такое сделать???


Название: Re: создание help для программ
Отправлено: Blackwanderer от Январь 14, 2011, 06:42
А вы не думали об использовании QtWebKit? Я всегда делаю полноценный мини браузер для отображения справки. Соответственно сразу отпадает вышеназванная проблема.


Название: Re: создание help для программ
Отправлено: GreatSnake от Январь 14, 2011, 09:19
void QTextBrowser::anchorClicked ( const QUrl & link ) [signal]


Название: Re: создание help для программ
Отправлено: GreatSnake от Январь 14, 2011, 09:58
Цитата: Черный Странник
А вы не думали об использовании QtWebKit? Я всегда делаю полноценный мини браузер для отображения справки. Соответственно сразу отпадает вышеназванная проблема.
Для обычной справки вполне достаточно встроенного в QtGui RichText-а. Имхо, QtWebKit уж больно тяжел для help-a.


Название: Re: создание help для программ
Отправлено: eldar85 от Январь 14, 2011, 10:52
QWebView слишком тяжел для справки, это же с прогой придется дллку QtWebKit придется закидывать, а она весит точно не помню, но по моему в несжатом состоянии больше 10 метров.

А как заиспользовать его в HTML документе????? У меня ведь в нем ссылки на файлы есть и хочу еще несколько ссылочек на сайты сделать.
Что то скорее связанное с  QDesktopServices::openUrl() но как это все связать?


Название: Re: создание help для программ
Отправлено: GreatSnake от Январь 14, 2011, 11:33
Цитировать
Что то скорее связанное с  QDesktopServices::openUrl() но как это все связать?
Да, действительно использовать QDesktopServices наверное будет лучше. К тому же QTextBrowser и будет его использовать, если
включить QTextBrowser::setOpenExternalLinks( true )


Название: Re: создание help для программ
Отправлено: vvvxmag от Январь 14, 2011, 11:59
Я в свое время сделал так что Ассистант вкомпиливался в прогу и из нее запускался. Нужно только создать соответсвующий файл *.adp для Ассистанта. И в вашем приложении Будет полноценная красивая справка


Название: Re: создание help для программ
Отправлено: eldar85 от Январь 14, 2011, 12:59
Хочется свою страничку помощи сделать, асистент конечно красиво, но у меня не хуже получилось. Симпотично смотриться))

Спасибо всем за помощь)

помогло:
Код:
text->setOpenExternalLinks(true);


Название: Re: создание help для программ
Отправлено: panAlexey от Январь 14, 2011, 15:20
Цитата: Черный Странник
А вы не думали об использовании QtWebKit? Я всегда делаю полноценный мини браузер для отображения справки. Соответственно сразу отпадает вышеназванная проблема.
Для обычной справки вполне достаточно встроенного в QtGui RichText-а. Имхо, QtWebKit уж больно тяжел для help-a.
+1