Có một số câu hỏi về SO về điều này, tất cả đều có vẻ như là cách duy nhất để xóa đường viền chấm chấm là to set the focusPolicy on widget/item in question to NoFocus. Trong khi điều này hoạt động như một bản sửa lỗi tạm thời, điều này ngăn cản sự tương tác thêm với tiện ích/mục được cho biết trong lĩnh vực tập trung cần thiết khác.Xóa đường viền chấm chấm mà không đặt NoFocus trong Windows PyQt
Said biên giới trong câu hỏi:
Dưới đây là một ví dụ về lý do tại sao điều này không làm việc.
- Tôi có cửa sổ bật lên tiện ích không phải Modal, hãy nghĩ hộp đèn cho hình ảnh.
- Tôi muốn phát hiện mousePressEvent bên ngoài tiện ích con và đóng tiện ích con. Để làm điều này, tôi nên catch the focusOutEvent.
- Tuy nhiên, nếu phần lớn các tiện ích trong chương trình của tôi được đặt là NoFocus (để loại bỏ vấn đề biên giới), thì tôi không thể lấy focusOutEvent vì bạn đoán nó không có chính sách lấy nét.
Dưới đây là một ví dụ khác:
- Tôi có một QTreeWidget được subclassed vì vậy tôi có thể bắt keyPressEvents vì nhiều lý do.
- QTreeWidget cũng được đặt làm NoFocus để ngăn đường biên. Bởi vì điều này, tuy nhiên, các widget không bao giờ có tập trung và do đó không có keyPressEvents có thể bị bắt.
- Giải pháp cho việc này (kludgy, imo) là use the widget's grabKeyboard class, điều này rất nguy hiểm nếu tôi quên phát hànhSau đó sau này. Đây không phải là tối ưu.
Vì vậy, câu hỏi là, có cách nào để xóa đường viền chấm kỳ lạ (chủ yếu là xấu xí) mà không tắt tiêu điểm cho mọi thứ trong ứng dụng của tôi không? Cảm ơn trước!
hệ điều hành gì trên bạn sử dụng? – jdi
Windows (7), tôi sợ. – Cryptite
Sau đó, bạn có thể được delving vào một paintEvent tùy chỉnh: -/ – jdi