Russian Qt Forum

Qt => Вопросы новичков => Тема начата: virtual_root от Май 04, 2012, 10:28



Название: Как программно получить количество букв помещающихся в label ?
Отправлено: virtual_root от Май 04, 2012, 10:28
Добрый день ребята. Подскажите пожалуйста, как мне программно узнать сколько букв я могу поместить в label определенной ширины. Я просто хочу в сообщении оставить такое количество букв которое вместится и троеточие добавить остальное обрезать. Как на сайтах часто встречается. Я понимаю глупый наверное вопрос,но очень нужен ваш совет. Просто статически оставлять какое-то фиксированное кол-во букв не хочется...


Название: Re: Как программно получить количество букв помещающихся в label ?
Отправлено: Пантер от Май 04, 2012, 10:35
http://doc-snapshot.qt-project.org/4.8/qwidget.html#fontMetrics


Название: Re: Как программно получить количество букв помещающихся в label ?
Отправлено: virtual_root от Май 04, 2012, 11:08
Спасибо,помогло.
Сделала так:
Код:
QFontMetrics m(ui->label_2->font());
         m.width(str)/ui->label_2->width();

У меня ещё вопрос. Может кому-то приходилось решать подобную задачу:
Есть сообщение, которое приходит от сервера в виде html. Отображаю его в textedit, так как оно может быть достаточно не маленьким. В сообщении встречаются ссылки. Возможно ли как-нибудь обработать эти ссылки, чтобы при нажатии на них запускался браузер и открывалась нужная страничка?
У меня была идея ложить их в label а потом в textedit, но я не нашла способа как это реализовать... У textedit нет метода addWidget...
Кто-нибудь знает решение?


Название: Re: Как программно получить количество букв помещающихся в label ?
Отправлено: Пантер от Май 04, 2012, 11:14
http://doc-snapshot.qt-project.org/4.8/qlabel.html#openExternalLinks-prop


Название: Re: Как программно получить количество букв помещающихся в label ?
Отправлено: virtual_root от Май 04, 2012, 11:15
Да, это я понимаю как при нажатии на qlabel открыть страничку, а как мне эти qlabel запихнуть в textedit?
И ещё вопрос: можно ли как-то из html текста получить только текст?


Название: Re: Как программно получить количество букв помещающихся в label ?
Отправлено: Alex Custov от Май 04, 2012, 11:16
Возможно ли как-нибудь обработать эти ссылки, чтобы при нажатии на них запускался браузер и открывалась нужная страничка?
У меня была идея ложить их в label а потом в textedit, но я не нашла способа как это реализовать... У textedit нет метода addWidget...
Кто-нибудь знает решение?

QTextBrowser


Название: Re: Как программно получить количество букв помещающихся в label ?
Отправлено: virtual_root от Май 04, 2012, 11:25
QTextBrouser подошёл! А как сделать так чтобы он мне ссылки не в себе открывал?
Я ловлю сигнал on_textBrowser_anchorClicked(const QUrl &arg1) открываю ссылку в браузере, но он ещё и дополнительно в себе её открывает... а этого мне не нужно.


Название: Re: Как программно получить количество букв помещающихся в label ?
Отправлено: virtual_root от Май 04, 2012, 11:28
уже нашла
Код:
 ui->textBrowser->setOpenLinks(false);


Название: Re: Как программно получить количество букв помещающихся в label ?
Отправлено: pastor от Май 04, 2012, 12:32
Цитировать
Я просто хочу в сообщении оставить такое количество букв которое вместится и троеточие добавить остальное обрезать.

см. QFontMetrics::elidedText


Название: Re: Как программно получить количество букв помещающихся в label ?
Отправлено: virtual_root от Май 04, 2012, 12:35
спасибо)


Название: Re: Как программно получить количество букв помещающихся в label ?
Отправлено: Странник от Май 04, 2012, 12:46
QTextBrouser подошёл! А как сделать так чтобы он мне ссылки не в себе открывал?
Я ловлю сигнал on_textBrowser_anchorClicked(const QUrl &arg1) открываю ссылку в браузере, но он ещё и дополнительно в себе её открывает... а этого мне не нужно.
setOpenExternalLinks(true) проще.