Название: вызов слота из Qtextedit [Решено] Отправлено: jatsuk от Март 30, 2012, 14:51 Помогите пожалуйста, что то не могу додуматься )
В общем задача такая: есть Qtextedit или Qtextbrowser В нем идут слова вот так: СЛОВО 1 СЛОВО 2 СЛОВО 3 СЛОВО 4... например, они являются html ссылками ... Нужно чтобы по нажатию на это слово выполнялся слот myslot(); Я вывел этот html код в textbrowser, для отловки нажатия на ссылку нашел сигнал QObject::connect(ui->opissim, SIGNAL(backwardAvailable (bool)),this, SLOT(myslot ())); myslot(); реально запускается, но вопрос - как передать само СЛОВО, чтобы о нем знать в myslot ??? Название: Re: вызов слота из Qtextedit Отправлено: _OLEGator_ от Март 30, 2012, 14:56 Странными сигналами пользуешься
Код
Название: Re: вызов слота из Qtextedit Отправлено: jatsuk от Март 30, 2012, 15:46 Если я все правильно понял, то я передам в слот URL.
Сделал, по нажатию по ссылке запускается слот, с содержимым переменной QUrl, указанным в текстбраузере... Но мне то нужно передавать не урл адресс, а русское слово, так оно отображается вот так ))) так как обычно сайты с русским доменом в браузере ) %D0%BC%D0%B0%D0%BA%D1%80%D0%BE%D1%82%D0%B0 Так что сделать то ? Название: Re: вызов слота из Qtextedit Отправлено: mutineer от Март 30, 2012, 16:01 Попробуй это
http://doc.crossplatform.ru/qt/4.7.x/html-qt/qurl.html#fromPercentEncoding Название: Re: вызов слота из Qtextedit Отправлено: jatsuk от Март 30, 2012, 16:06 Не понял что вы мне за ссылку кинули )
Всё оказало проще... Сделал преобразование переменной QURL в QString и слово стало снова русским QString fdhfd2=fdhfd.toString(); Всем спасибо, проблема решена ;D Название: Re: вызов слота из Qtextedit Отправлено: _OLEGator_ от Март 30, 2012, 16:08 Внеси соответствующие изменения в заголовок темы, отредактировав первое сообщение.
Название: Re: вызов слота из Qtextedit Отправлено: mutineer от Март 30, 2012, 16:18 Не понял что вы мне за ссылку кинули ) Всё оказало проще... Сделал преобразование переменной QURL в QString и слово стало снова русским QString fdhfd2=fdhfd.toString(); Всем спасибо, проблема решена ;D ссылка была на метод, преобразующий процентную кодировку в нормальный текст Название: Re: вызов слота из Qtextedit [Решено] Отправлено: jatsuk от Март 31, 2012, 03:20 mutineer, спасибо.
Но проблема не решена, появилась новая ) Если выводить текст в слоте myslot, то весь текст выводится ссылкой. пытался выводить просто текст, а не из переменной, пытался через sethtml, всё тоже текст - одна большая ссылка. самое интересное , что если вручную потом нажать на слот, который выводит какой либо тескт в textbrowser, то выводится нормально - НЕ ссылкой. Что творится, я не понимаю ?) Название: Re: вызов слота из Qtextedit Отправлено: mutineer от Март 31, 2012, 11:32 не понял, показывай код
Название: Re: вызов слота из Qtextedit Отправлено: jatsuk от Март 31, 2012, 14:51 в .h файле
public slots: void backward(const QUrl fdhfd); в .cpp файле QObject::connect(ui->opissim, SIGNAL ( anchorClicked(const QUrl)),this, SLOT(backward (const QUrl))); ... void MainWindow::backward(const QUrl fdhfd) { QString fdhfd2=fdhfd.toString(); QSqlQuery ppsim;//Запрос селекта ppsim.exec("SELECT o_sim FROM alfa WHERE n_sim='"+fdhfd2+"' "); while(ppsim.next()){ QString opsim3 = ppsim.value(0).toString(); //изымаем стоку из таблицы ui->opissim->setText(opsim3); } } в строке opsim3 содержится обычный текст, а выводится он как одна большая ссылка... Название: Re: вызов слота из Qtextedit Отправлено: V1KT0P от Март 31, 2012, 20:37 в .h файле opissim - QTextBrowser?public slots: void backward(const QUrl fdhfd); в .cpp файле QObject::connect(ui->opissim, SIGNAL ( anchorClicked(const QUrl)),this, SLOT(backward (const QUrl))); ... void MainWindow::backward(const QUrl fdhfd) { QString fdhfd2=fdhfd.toString(); QSqlQuery ppsim;//Запрос селекта ppsim.exec("SELECT o_sim FROM alfa WHERE n_sim='"+fdhfd2+"' "); while(ppsim.next()){ QString opsim3 = ppsim.value(0).toString(); //изымаем стоку из таблицы ui->opissim->setText(opsim3); } } в строке opsim3 содержится обычный текст, а выводится он как одна большая ссылка... У меня если текст в QTextBrowser через setText пихать, получается текст а не ссылка. Уверен сто html теги не передаешь? Название: Re: вызов слота из Qtextedit Отправлено: jatsuk от Апрель 01, 2012, 04:38 Да, он самый )
пробовал даже напрямую писать ui->opissim->setText("балалаалл"); балалаалл становится ссылкой. а что есть в этом слоте вызвать другой слот, например, myslot2 и передать туда уже qstring ? Название: Re: вызов слота из Qtextedit Отправлено: V1KT0P от Апрель 01, 2012, 15:28 Да, он самый ) Выложи минимальный проект с багом и тебе сразу помогут.пробовал даже напрямую писать ui->opissim->setText("балалаалл"); балалаалл становится ссылкой. а что есть в этом слоте вызвать другой слот, например, myslot2 и передать туда уже qstring ? Название: Re: вызов слота из Qtextedit Отправлено: jatsuk от Апрель 07, 2012, 04:28 Пересилил себя наконец-то и написал минимальный проект, чтобы вы посмотрели в чём дело...
В ТекстБраузер передается описание <a href=\"Слово1\">Слово1</a><br><a href=\"Слово2\">Слово2</a><br><a href=\"Слово3\">Слово3</a><br>Слово4<br>Слово5 то есть выдается 3 ссылки и 2 обычных слова, по нажатию по ссылке должно вывести просто описание этого слова, например. Описание для слова 1 А отображается оно почему то как ссылка... Приложил проект. Название: Re: вызов слота из Qtextedit Отправлено: V1KT0P от Апрель 07, 2012, 04:50 А отображается оно почему то как ссылка... Действительно =). Это какая-то недокументированная фича. Я советую поступить так, как это делает кьютовский дизайнер:Код
Название: Re: вызов слота из Qtextedit Отправлено: jatsuk от Апрель 07, 2012, 05:34 Спасибо, всё заработало наконец то
Кстати можно без строки html, просто ui->opissim->setHtml(textopis); TextBroser всё равно добавит свои HTML стили |