Bazı girişler için bir QTextEdit kullanıyorum. Ama kutunun yüksekliğini ayarlamak istiyorum. Yüksekliği, bir seferde görünür olmasını istediğim satır sayısına göre ayarlayabilir miyim?QTextEdit için satır sayısı nasıl ayarlanır?
cevap
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.
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.
QTextEdit fare tekerleği yakınlaştırma, varsayılan olarak etkin olmuştur. – TonyK
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.
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
Bu çalışması gerekir:
QTextEdit *myEdit = new QTextEdit(myContentString);
QSize myEditSize = myEdit->document()->size().toSize();
myEditSize.setWidth(QWIDGETSIZE_MAX);
myEdit->setMaximumSize(myEditSize);
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);
}
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. –