2013-09-24 74 views
25

Tôi muốn mã hóa một cửa sổ thông báo ở góc dưới cùng bên phải của màn hình, vì vậy nó hoạt động giống như thông báo Skype khi ai đó trực tuyến. Ai đó có thể giúp tôi có được kích thước màn hình của máy tính để bàn, vì vậy tôi có thể đặt cửa sổ thông báo của mình ở góc dưới cùng bên phải bằng Ứng dụng Qt của tôi không?Tôi làm cách nào để tìm kích thước màn hình/màn hình trong Qt, vì vậy tôi có thể hiển thị thông báo trên màn hình?

Trả lời

54

Bạn có thể sử dụng QDesktopWidget

QRect rec = QApplication::desktop()->screenGeometry(); 
height = rec.height(); 
width = rec.width(); 
+5

Hãy cẩn thận-nó có khả năng tốt hơn để sử dụng hình học _available_: http://doc.qt.io/qt-5/qdesktopwidget.html#availableGeometry –

+0

Tôi nghĩ bạn có thể quan tâm trong QDesktopWidget :: kích thước() phương pháp thay thế: cho tôi mà sẽ trở lại kích thước của hai màn hình xếp chồng lên nhau với nhau khi chúng được cấu hình trong cài đặt hiển thị. Gọi 'screenGeometry' chỉ cho kích thước của một màn hình. –

5

Bạn chưa nói mà nền tảng bạn đang phát triển cho, nhưng một số nền tảng có API cho hiển thị thông báo. Cách tốt nhất là sử dụng chúng, khi có sẵn, vì dưới cùng bên phải nếu màn hình có thể không phù hợp. Bạn có thể rơi vào số answer của krammer.

Trong GNOME, ví dụ, người dùng có thể thực hiện thông báo xuất hiện trên một màn hình cụ thể hoặc chọn không hiển thị thông báo cho đến khi họ nhấp vào biểu tượng khay hệ thống. API libnotify cấp cho nhà phát triển quyền truy cập vào tính năng này.

Nói về khay hệ thống, bạn có thể cân nhắc sử dụng QSystemTrayIcon để thay thế. Nó sẽ làm cho giao diện người dùng hơi khác một chút, nhưng có một API Qt độc lập nền tảng, hoạt động cho GNOME, KDE, MacOS, Windows và có thể là các nền tảng khác. Nó cũng có phương thức showMessage để hiển thị thư theo cách có nguồn gốc cho nền tảng, chẳng hạn như trong hình cầu có âm thanh phát ra dễ thương đối với một số phiên bản của Windows.

+0

Windows và Mac –

+0

@SanathReddy: Tôi chưa thử, nhưng có thể điều này sẽ làm những gì bạn muốn: https://github.com/KDE/snorenotify –

7

QScreen lớp (kể từ Qt 5.0) cung cấp thông tin về kích thước màn hình (logic và vật lý), hướng và tín hiệu cho các thay đổi.

QScreen *screen = QGuiApplication::primaryScreen(); 
QRect screenGeometry = screen->geometry(); 
int height = screenGeometry.height(); 
int width = screenGeometry.width(); 
+0

Cách tiếp cận này cũng có thể được ngụ ý cho việc tải có điều kiện các trang 'QML' (ví dụ, các trang 'QML' khác nhau cho các độ phân giải/định hướng màn hình khác nhau) trong cả Android và Linux (Desktop/Embedded)? – KernelPanic