Вопрос возник вот из-за чего: пишу систему печати:
http://www.prog.org.ru/topic_19872_0.html. Понадобилось узнать, сколько строчек будет занимать текст, что бы правильно формировать разбивку постранично. Длинну текста посимвольно узнать не проблема, а вот размер физического места проблема. Решил сделать такой трюк:
QLabel * labelTst = new QLabel(this);
labelTst->setWordWrap(true);
labelTst->setFixedWidth(100);
Вставляем текст и вуаля, физический размер. Но возникла странная проблема:
qDebug() << QString("before %1 - %2").arg(editTst->text()).arg(labelTst->height());
labelTst->setText(editTst->text());
labelTst->update();
labelTst->updateGeometry();
qDebug() << QString("after %1 - %2").arg(editTst->text()).arg(labelTst->height());
Показывает одинаковый размер! А при перевызове этой функции, покажет правильный размер для старого текста. Т.е., если я правильно понимаю, то виджет не успел перерисоваться, а я уже спрашиваю новый размер виджета. Как это побороть? Или есть более элегантное решение проблемы получания физического размера текста?