LINUX.ORG.RU

Расчет ширины GtkLabel в зависимости от помещаемой строки


0

0

Имеется несколько строк (скажем, 3).

Необходимо узнать наибольшую из ширин виджета GtkLabel,
из тех, что он принимает после помещения в него этих строк поодиночке.

Т.е. for (i=0, max_width = -1; i < 3; i ++)
     {
        gtk_label_set_text (label, line [i]);
        gtk_widget_size_request (GTK_WIDGET (label), &requisition);
	if (requisition.width > max_width) max_width = requisition.width;
     }

     printf ("%d\n", max_width);

Работает быстро. Но всё же, хочется узнать более оптимальный
по вычислительным нагрузкам (быстрый) вариант.  Как написать
грамотно?
★★★★★
Ответ на: комментарий от brumal

> Сравнить строки выбрав самую длинную

не уверен, что "llll" в его шрифте длиннее, чем "ЖЖЖ"

philip
()

можно попросить у pango какой будет ширина текста данным шрифтом, а потом добавить всякие тематические отступы для gtklabel, и спросить у gtklabel его ширину

это будет чутка быстрее чем спрашивать у gtklabel

anonymous
()
Ответ на: комментарий от brumal

>Сравнить строки выбрав самую длинную и узнать ширину в её случае - не быстрее будет?

Буквы шрифта разной ширины

ttnl ★★★★★
() автор топика
Ответ на: комментарий от anonymous

>можно попросить у pango какой будет ширина текста данным шрифтом

Киньте, пожалуйста, для примера функцию

ttnl ★★★★★
() автор топика

Мне в свое время подсказали удачный вариант - запихать все эти строки в gtknotebook (без закладок, бордеров и пр.). Автоматически получается максимальная ширина.

svu ★★★★★
()
Ответ на: комментарий от rymis

>>А можно и в GtkLabel, он не запрещает везде поставить \n.

Интересная идея

ttnl ★★★★★
() автор топика
Ответ на: комментарий от svu

>>Мне в свое время подсказали удачный вариант - запихать все эти строки в gtknotebook (без закладок, бордеров и пр.). Автоматически получается максимальная ширина.

Спасибо, все попробую

ttnl ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.