2009-09-23 28 views

Trả lời

17

Bạn có thể truy xuất phông chữ cố định mặc định của hệ thống bằng chức năng systemFont (..) của QFontDatabase. Nó đã được giới thiệu trong Qt 5.2.

Ví dụ:

const QFont fixedFont = QFontDatabase::systemFont(QFontDatabase::FixedFont) 
+3

Và trước khi Qt 5? – Momergil

+0

Thực ra, điều này không hoạt động trên Qt 5 trên Linux, nhưng có thể do một số cấu hình sai của fontconfig trong bản dựng Qt tĩnh của chúng ta, tuy nhiên, 'setStyleHint 'phương pháp đã làm việc. –

15

Đối với tất cả các tiện ích chấp nhận Nội dung đa phương tiện, bạn có thể chỉ cần đặt nó vào khối pre, tức là <pre>This is my Text</pre>. Sau đó nó sẽ sử dụng phông chữ hệ thống monospace.

+0

tôi đã cố gắng này trong chương trình của tôi và nó làm việc, nhưng nó cũng đã thêm một ngắt dòng sau thẻ trước. Tôi không biết làm thế nào để thoát khỏi điều đó vì vậy tôi đã cố gắng văn bản thay vào đó và đã làm việc! Tuy nhiên, tôi chưa xác minh rằng giải pháp của tôi là di động. – mjwach

1

Tôi sử dụng Chuyển phát nhanh trong Qt trên cả Linux và Windows.

41

Bạn có thể sử dụng style hint tài sản của QFont:

QFont font("Monospace"); 
font.setStyleHint(QFont::TypeWriter); 

Nếu font chữ không thể được tìm thấy (mà xảy ra với Monospace trên Windows), font matching algorithm cố gắng Qt để tìm một phông chữ phù hợp với gợi ý phong cách nhất định.

+3

Ngoài sự tò mò: tại sao không phải là 'QFont :: Monospace'? – kralyk

+4

Phụ lục bổ sung hữu ích: mã đó chỉ hoạt động nếu bạn chuyển tên gia đình cho hàm tạo QFont. Nếu không, nó sẽ sử dụng họ phông chữ mặc định, sẽ có độ rộng thay đổi, sau đó ghi đè gợi ý kiểu. Tôi đã phải làm điều này, 'QFont font (" ");', khi tôi không có một phông chữ monospace cụ thể để yêu cầu. – Harvey

+0

@kralyk Tôi cũng tò mò, và tôi đã thử trên Windows và tôi nhận thấy rằng 'QFont :: Monospace' sẽ không tạo ra phông chữ đơn điệu, trong khi' TypeWriter' sẽ. Không thể thực sự giải thích lý do tại sao, mặc dù: ( – AkiRoss

Các vấn đề liên quan