2010-10-25 39 views

Trả lời

6

Tôi đã làm một số nghiên cứu và đây là những gì tôi đã đưa ra:

Một QSystemTrayIcon không thể xử lý một cách rõ ràng kéo/thả sự kiện. Tuy nhiên có một giải pháp thay thế dựa trên phương pháp vị trí biểu tượng khay Spifftastic.

  1. Bạn tạo một biểu tượng màu duy nhất và đặt nó như là biểu tượng cho một thời gian ngắn và có một ảnh chụp màn hình của nó.
  2. Vì bạn biết màu sắc trình tự cho biểu tượng, bạn có thể tìm kiếm thông qua ảnh chụp màn hình và xác định vị trí của biểu tượng cụ thể là vị trí.
  3. Tiện ích trong suốt được đặt qua biểu tượng và được sử dụng làm mục tiêu thả .

Tôi chưa làm việc tại một số chi tiết tốt hơn về hoạt động nhưng đó là ý chính của nó. Tất cả mọi thứ được coi là một cách hacky của mọi thứ nhưng cho rằng không có cách nào khác để làm điều này tôi nghĩ rằng đó là chấp nhận được.

Ứng dụng Fluffy (được viết bằng C#) sử dụng phương pháp Spifftastic để định vị biểu tượng khay. Tôi giả định một phần về cửa sổ trong suốt là cách họ thực hiện điều đó nhưng tôi vẫn chưa dịch ngược và kiểm tra hệ thống của họ.

1

Vì QSystemTrayIcon là QObject, không phải là QWidget, tôi đoán là điều này là không thể. Biểu tượng khay hệ thống không thực sự thuộc sở hữu của Qt - nó được chuyển sang 'màn hình', tức là bất kỳ phần nào của Gnome/KDE/Windows/Mac đang vẽ khu vực có liên quan. Ít nhất là trên Mac, bạn sẽ rơi vào thanh menu, đó sẽ là một giao diện người dùng rất lạ. Đối với Gnome và KDE nó là một tiêu chuẩn FreeDesktop.org, nhưng một lần nữa tôi không nghĩ rằng quá trình của bạn mà thực sự vẽ, và do đó không có cách nào để Qt có được các sự kiện như kéo và thả cho bạn.

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