Tôi muốn đặt khoảng cách dòng của QTextEdit.Đặt khoảng cách dòng trong QTextEdit
Đó là không có vấn đề để có được thông tin đó với
QFontMetrics::lineSpacing();
Nhưng làm thế nào để thiết lập đó?
Tôi đã thử với stylesheets, nhưng điều đó không làm việc:
this->setStyleSheet("QTextEdit{ height: 200%; }");
hoặc
this->setStyleSheet("QTextEdit{ line-height: 200%; }");
giải pháp từng phần:
Vâng, tôi đã tìm thấy một giải pháp - không phải theo cách tôi muốn, nhưng ít nhất nó đơn giản và nó mang lại gần như hành vi dự định của tôi, đủ cho chứng minh khái niệm của tôi.
Trên mỗi dòng mới, có một số dòng. Nhưng nếu bạn chỉ cần gõ cho đến khi văn bản được tự động gói vào một dòng mới, bạn sẽ không có khoảng cách giữa hai dòng này. Hack này chỉ hoạt động với các khối văn bản, xem mã.
Chỉ cần nhớ rằng đó là sức mạnh vũ phu và một bản hack xấu xí. Nhưng nó cung cấp một số loại dòng-khoảng cách để QTextEdit đẹp của bạn. Gọi nó mọi lúc văn bản của bạn thay đổi.
void setLineSpacing(int lineSpacing) {
int lineCount = 0;
for (QTextBlock block = this->document()->begin(); block.isValid();
block = block.next(), ++lineCount) {
QTextCursor tc = QTextCursor(block);
QTextBlockFormat fmt = block.blockFormat();
if (fmt.topMargin() != lineSpacing
|| fmt.bottomMargin() != lineSpacing) {
fmt.setTopMargin(lineSpacing);
//fmt.setBottomMargin(lineSpacing);
tc.setBlockFormat(fmt);
}
}
}
Tuy nhiên, một giải pháp tốt sẽ rất quan tâm. – qwc