2011-03-10 18 views

cevap

12

Eğer QPlainTextEdit kullanırsanız, böyle bir şey hile yapmak gerekir:

void SetHeight (QPlainTextEdit* edit, int nRows) 
    { 
    QFontMetrics m (edit -> font()) ; 
    int RowHeight = m.lineSpacing() ; 
    edit -> setFixedHeight (nRows * RowHeight) ; 
    } 
Sen marj olarak iki veya üç piksel eklemek isteyebilirsiniz

; deney anlatır.

+2

Bu, son satırın kesileceği şekilde küçük aracın kenar boşluğunu ve kenarlığını yok sayar. Eklenecek piksel miktarı kullanımdaki temaya bağlıdır, bu yüzden bundan daha karmaşıktır. –

1

QTextEdit normal bir widget, bu yüzden minimumHeight özelliğini kullanabilirsiniz. Bununla birlikte, hatların sayısına bağlı olarak asgari yüksekliği ayarlamanın gerçekten imkansız olduğuna inanıyorum. Bu, yazı tipinin boyutunu değiştirdiğinizde, bir widget'ın minimum boyutunu otomatik olarak yeniden boyutlandıracaktır. Ancak yazı tipinin boyutunu biliyorsanız, widget'ınızın bazı kullanılabilir minimum boyutlarını ayarlayabilirsiniz.

+0

QTextEdit fare tekerleği yakınlaştırma, varsayılan olarak etkin olmuştur. – TonyK

2

kullanımı QFont (a tipi özelliğine sahip olması gerekir QTextEdit) QTextEdit metinlerin tek bir satır yüksekliğini belirler. Bundan sonra, 'un yüksekliğini değerini, göstermek istediğiniz satır sayısı ile çarpıp widget'ın (minimum-) yüksekliğini bu değere ayarlayın.

+0

QTextEdit ile ilgili sorun, her satırın farklı bir yüksekliğe sahip olabileceğidir. Tek bir metin biçimine (ancak farklı renklere izin verilir) gereksinim duyuyorsanız, belki de QPlainTextEdit daha iyidir. – TonyK

0

Bu çalışması gerekir:

QTextEdit *myEdit = new QTextEdit(myContentString); 
QSize myEditSize = myEdit->document()->size().toSize(); 
myEditSize.setWidth(QWIDGETSIZE_MAX); 
myEdit->setMaximumSize(myEditSize); 
0

QPlainTextEdit hakkında kabul cevabı artırma. lineSpacing'a ek olarak, setFixedHeight değeri aşağıdakileri içermelidir: Temeldeki QTextDocument 2 kenar boşluğu, çerçevenin 2 genişliği ve pencere öğesi içeriğinin kenar boşlukları. Ayrıca, belgenin kendisinden değil, belgenin bir fontundan QFontMetrics olmalıdır. Yani, gibi okumalısınız varsayımsal fonksiyon setHeight şu: Bu kapatmak gerekir bu yüzden

void setHeight (QPlainTextEdit *ptxt, int nRows) 
{ 
    QTextDocument *pdoc = ptxt->document(); 
    QFontMetrics fm (pdoc->defaultFont()); 
    QMargins margins = ptxt->contentsMargins(); 
    int nHeight = fm.lineSpacing() * nRows + 
     (pdoc->documentMargin() + ptxt->frameWidth()) * 2 + 
     margins.top() + margins.bottom(); 
    ptxt->setFixedHeight (nHeight); 
} 
İlgili konular