Tôi chỉ cần biết cách thay đổi kích thước tab trong Qt trong một QTextEdit. Tìm kiếm của tôi trên Google và stackoverflow trả lại cho tôi giá trị rỗng. Cảm ơn trước.Cách ghi đè độ rộng của tab trong qt?
Trả lời
Nếu bạn muốn tạo một trình soạn thảo mã nguồn sử dụng QTextEdit
, trước tiên bạn nên gán một phông chữ (monospace) chiều rộng cố định. Điều này đảm bảo rằng tất cả các nhân vật đều có cùng chiều rộng:
QFont font;
font.setFamily("Courier");
font.setStyleHint(QFont::Monospace);
font.setFixedPitch(true);
font.setPointSize(10);
QTextEdit* editor = new QTextEdit();
editor->setFont(font);
Nếu bạn muốn thiết lập chiều rộng tab để số tiền nhất định của không gian, vì nó thường được thực hiện trong soạn thảo văn bản, sử dụng QFontMetrics
để tính toán kích thước của một không gian trong pixel:
const int tabStop = 4; // 4 characters
QFontMetrics metrics(font);
editor->setTabStopWidth(tabStop * metrics.width(' '));
Thuộc tính QTextEdit::tabStopWidth
có thể giải quyết vấn đề của bạn (xem here cho Tài liệu ...)
cảm ơn câu trả lời của bạn, để thử nó, tôi đặt TabStopWidth thành 40, vì vậy điều này đã thay đổi kích thước tab của tôi. Nhưng điều này tương ứng với 11 ký tự khoảng trắng và 5 ký tự. Tại sao tất cả các charachters có kích thước khác nhau? Tôi muốn trình soạn thảo của mình hoạt động như trình chỉnh sửa mã nguồn. Những gì tôi đang mất tích? –
Sử dụng phông chữ đơn cách như Courier New và tất cả các ký tự của bạn sẽ có cùng chiều rộng. – JonathanK
Computing một sản phẩm có kích thước của một không gian vũ trụ và num là không phải lúc nào chính xác (kiểm tra trong hệ điều hành MacOS, Monaco phông chữ), có lẽ là do một số khoảng trống ở giữa các ký tự trong chuỗi thực. Một giải pháp tốt hơn là nên đo chiều dài của chuỗi chứa không gian tabstop:
const int tabStop = 4; // 4 characters
QString spaces;
for (int i = 0; i < tabStop; ++i) {
spaces += " ";
}
QFontMetrics metrics(font);
editor->setTabStopWidth(metrics.width(spaces));
Trong khi giải pháp @Ferdinand Beyer sẽ làm việc trên một số hệ thống, thường là phông chữ không đảm bảo có số liệu số nguyên. ví dụ: 12pt DejaVu Sans Mono
trên thiết lập Linux của tôi có độ rộng ký tự là 9.625. Giải pháp tốt nhất mà tôi tìm thấy là thêm khoảng cách giữa các chữ cái để căn chỉnh pixel hoàn hảo.
int tabstop = 4;
QFontMetricsF fm (ui->textEdit->font());
auto stopWidth = tabstop * fm.width(' ');
auto letterSpacing = (ceil(stopWidth) - stopWidth)/tabstop;
auto font = ui->textEdit->font();
font.setLetterSpacing(QFont::AbsoluteSpacing, letterSpacing);
ui->textEdit->setFont(font);
ui->textEdit->setTabStopWidth(ceil(stopWidth));
- 1. Hành vi tab ghi đè trong WinForms
- 2. Ghi đè hành vi mặc định của TAB trong JTextPane
- 3. Cách "ghi đè" các phương thức mở rộng trong .NET?
- 4. Cách ghi đè hàm.length để trả về độ dài của mảng, ở chế độ nghiêm ngặt
- 5. Tôi làm cách nào để ghi đè/mở rộng tham chiếu trong JavaScript của Chrome?
- 6. Ghi đè phương thức ở cấp độ
- 7. Làm cách nào để đặt độ rộng của tab trong chỉnh sửa komodo?
- 8. Cách ghi đè Chứa()?
- 9. C++ Ghi đè ... ghi đè?
- 10. Ghi đè hoặc ghi đè
- 11. Ghi đè mapreduce.fileoutputcommitter.marksuccessfuljobs của hadoop trong oozie
- 12. Cách ghi đè (không phải ghi đè OOP) đầu ra của System.out.print()?
- 13. Ghi đè/Mở rộng lớp Tóm tắt Magento?
- 14. Ghi đè phương thức ghi đè (C#)
- 15. Django: Ghi đè và mở rộng một mẫu ứng dụng
- 16. Ghi đè kiểu trong WPF
- 17. cách ghi đè [] dấu ngoặc trong ruby?
- 18. Tôi làm cách nào để đặt độ rộng của tab cho các tệp JSON?
- 19. ghi đè JTree nhấp đúp để ngăn mở rộng nút?
- 20. Cách ghi đè trường trong lớp cha
- 21. Cách ghi đè ràng buộc trong GIN
- 22. Không thể ghi đè __init__ của lớp từ phần mở rộng của Cython
- 23. Cách ghi đè phần tử Xsd bên trong phần tử cha/mở rộng
- 24. Sự khác biệt giữa ghi đè ảo, ghi đè, ghi đè mới và bị ghi
- 25. Ghi đè UserManager trong django
- 26. GridSplitter ghi đè trình kích hoạt kiểu của ColumnDefinition?
- 27. Ghi đè từInteger trong Haskell
- 28. Ghi đè đối tượng ghi đè với các liên kết
- 29. Ghi đè Phím tắt của Trình duyệt
- 30. Các hằng số ghi đè trong Java
Thuộc tính 'tabStopWidth' như thế nào? http://doc.qt.digia.com/qt/qtextedit.html#tabStopWidth-prop – fasked