Quand vous sousclassez un QWidget pour qu’il aille des comportements différents, il peut être difficile de trouver quelle est la taille des marges, bordures, etc.
Par exemple, si vous voulez sousclasser un QLineEdit pour ajuster automatiquement la taille du texte, vous pouvez trouver le rectangle où le texte est entré avec la méthode suivante : QWidget::contentsRect();
J’ai fait, par exemple, pour ajuster la taille du texte entré :
void QMyLineEdit::onTextChanged ( const QString & text ) {
if(mMaxFontSize == -1)
mMaxFontSize = font().pixelSize();// in the constructor the pixelSize is -1
QFont tmpFont = QFont(font());
tmpFont.setPixelSize(mMaxFontSize);
while(tmpFont.pixelSize() >= mMinFontSize && contentsRect().width() < QFontMetrics(tmpFont).width(QString(" %1 ").arg(text))) {
tmpFont.setPixelSize(tmpFont.pixelSize() - 1);
}
setFont(tmpFont);
}