2014-04-16 6 views
6

Come posso ottenere i margini del testo per un QLineEdit?Ottieni i margini del testo di un QLineEdit

Nota le linee rosse nello screenshot, ecco i margini che mi interessano:

enter image description here

ho provato qDebug() << ui->lineEdit->textMargins(); per la casella di modifica dallo screenshot, ma stampate QMargins(0, 0, 0, 0), anche se la modifica la casella ha margini.

+0

Eventualmente questo è lo spazio tra la dimensione del font e la dimensione del widget? Probabilmente potresti calcolarlo per dimensione del carattere (QFontMetrics) e altezza disponibile. Il metodo textMargins() restituisce lo spazio libero riservato per i margini, un margine di 0 non implica che il tuo font colpirà sempre i bordi. –

+1

Ciò potrebbe spiegare i margini verticali, ma non quello orizzontale. Inoltre, quello orizzontale può scomparire, vedere http://i.stack.imgur.com/9mD13.png – sashoalm

+0

Perché hai bisogno di queste informazioni? forse c'è un modo alternativo per risolvere il tuo problema senza ottenere questi valori. –

risposta

3

Controllare paint event of QLineEdit. Come puoi vedere, molte cose hanno effetto su di esso.

Oltre allo textMargins ci sono cose che possono avere un impatto sui valori che stai cercando.

  1. stile utilizzato (vedi linea 1861)
  2. e carattere proprietà - vedi QFontMetrics::ascent e QFontMetrics::descent

Il valore stile è più l'importazione e si deve trovare modo per ottenere questo valore (probabilmente sottoclasse è necessario)

+0

il link non funziona più, ce n'è uno nuovo? – wutzebaer

Problemi correlati