2009-09-13 22 views
18

Khi tôi tạo một QPushButton với một Biểu tượng theo mặc định sẽ hiển thị văn bản ở bên phải của biểu tượng. Có cách nào để hiển thị văn bản bên dưới biểu tượng không?Biểu tượng Qt QPushbutton phía trên Văn bản

+1

@Lundin Không sao. Đó là nỗ lực để cải thiện bài đăng. Tôi nghĩ rằng sự nhấn mạnh của tên lớp là ý tưởng tốt. Ngoài ra tôi đã chọn những từ quan trọng nhất trong bài đăng để làm cho chúng dễ nắm bắt. – fat

+0

@fat Định dạng tên lớp hoặc mã rõ ràng khác là tốt, nhưng không cần phải thêm nhấn mạnh vào các từ ngẫu nhiên. – Lundin

Trả lời

25

Nếu bạn có thể, điều đơn giản nhất để làm là sử dụng một QToolButton thay vì:

QToolButton* button = new QToolButton(this); 
button->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); 
button->setIcon(myIcon); 
button->setText("Sample text"); 

Nếu đó không phải là một lựa chọn bạn có thể xem xét việc tạo nút phụ tùng của riêng bạn, có thể có nguồn gốc từ QPushButton hoặc QAbstractButton. Trong trường hợp này, bạn có thể sẽ không tập trung hầu hết các nỗ lực của bạn vào việc thực hiện lại paintEvent().

[Edit: đọc những ý kiến ​​giải pháp thay thế mà có lẽ là cách đơn giản hơn thế này]

+0

Bạn thực sự có thể thêm giao diện người dùng vào QPushButton nếu muốn. Việc định kích thước tự động có thể trở nên phức tạp, nhưng theo cách đó bạn hoàn toàn có thể kiểm soát vị trí của một biểu tượng và nhãn văn bản. –

+2

phân lớp chỉ để định dạng thường không đáng để thử. Rất nhiều điều có thể được thực hiện chỉ bằng cách áp dụng các kiểu. Và trong khi tài liệu về các kiểu có thể tốt hơn, nó hoạt động khá tốt và thường như mong đợi. –

+0

Đây chính xác là những gì tôi đang cố gắng làm. Cảm ơn! – DHamrick

4

Sử dụng Qt Creator, và ở khung phía dưới bên phải, bạn sẽ thấy một tùy chọn 'textFormat', trong đó chọn ToolButtonTextUnderIcon.

+2

Trong qtcreator của tôi nó được gọi là "toolButtonStyle". –

+0

đó là dành cho QToolButton, OP hỏi về QPushButton –

7
QPushButton { 
    padding: -25px 0 10px 0; 
    border: 1px solid black; 
    border-radius: 2px; 
    background-position: center bottom; 
    background-repeat: no-repeat; 
    background-origin: content; 
    background-image: url(":/new/resource/accept.png"); 
} 
QPushButton:disabled { 
    background-image: url(":/new/resource/accept_b.png"); 
} 
Các vấn đề liên quan