2010-09-05 6 views
2

Dites que je remplis QComboBox avec un nombre sur chaque ligne. Et les lignes sont très proches verticalement. Comment puis-je contrôler verticalement la distance?Taille de la police Articles QComboBox?

+0

Peut-être que vous devriez créer une nouvelle question sur la validation des entrées. –

+0

OK, avec la validation d'entrée que j'ai déjà fait. – Narek

Répondre

6

Si vous voulez juste changer la hauteur de ligne (au lieu de changer la taille de la police) créer une nouvelle classe déléguée:

class RowHeightDelegate : public QItemDelegate 
{ 
    Q_OBJECT 
public: 
    QSize sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const 
    { 
     return QSize(1, 40); // the row height is now 40 
    } 
}; 

Et mis à votre combobox:

ui->comboBox->setItemDelegate(new RowHeightDelegate()); 

Edit:

L'exemple ci-dessus montre comment modifier la hauteur des lignes de la liste déroulante. La taille de la police n'est pas modifiée. Si vous voulez changer la taille de la police de l'ensemble combobox (liste déroulante inclus), créer une nouvelle police avec une taille souhaitée et le mettre à la combobox:

QFont font; 
font.setPointSize(font.pointSize() + 10); 
ui->comboBox->setFont(font); 

Ou utiliser Qt Designer ou Qt Creator pour changer la taille de police.

+0

Wow ... !!! Pourquoi si dur? Est-ce le seul moyen? – Narek

+0

Est-il obligatoire d'hériter de QItemDelegate pour faire cette opération simple? – Narek

+0

Eh bien, ce n'est pas * difficile *. Ma réponse contient tout le code dont vous avez besoin, donc il s'agit essentiellement de deux opérations de copier/coller :) Le moyen le plus simple est de changer la taille de la police de la liste déroulante. Cela ne nécessite pas d'écrire du nouveau code, vous pouvez le faire en utilisant Qt Designer ou Qt Creator. –

Questions connexes