Obtenir le padding, margin et bordure de votre widget custom | Comment programmer avec Qt c++ | Uncategorized


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);
}




Laisser une réponse


Spam Protection by WP-SpamFree




Sponsors