Chcę kodować okno powiadomień w prawym dolnym rogu pulpitu, dzięki czemu działa jak powiadomienia Skype, gdy ktoś przychodzi online. Czy ktoś może mi pomóc uzyskać rozmiar ekranu na pulpicie, więc mogę umieścić moje okno powiadomień w prawym dolnym rogu przy użyciu mojej aplikacji Qt?Jak mogę znaleźć rozmiar ekranu/pulpitu w Qt, więc mogę wyświetlić powiadomienie na pulpicie?
Odpowiedz
Można użyć QDesktopWidget
QRect rec = QApplication::desktop()->screenGeometry();
height = rec.height();
width = rec.width();
Nie podano jakiej platformie masz rozwija, ale niektóre platformy mają API do wyświetlania powiadomień. Najlepiej używać tych, gdy są dostępne, ponieważ w prawym dolnym rogu, jeśli ekran może nie być odpowiedni. Możesz powrócić na krammer's answer.
w GNOME, na przykład, użytkownik może dokonać powiadomienia pojawiają się na danym ekranie, lub zdecydować się nie pokazać ich w ogóle, dopóki nie kliknąć na ikonę w zasobniku systemowym. Interfejs API libnotify
daje programiście dostęp do tej funkcji.
Mówiąc o tacach systemowych, warto rozważyć użycie zamiast tego QSystemTrayIcon
. To sprawi, że interfejs użytkownika będzie trochę inny, ale ma niezależny od platformy interfejs API Qt, który działa dla GNOME, KDE, MacOS, Windows i prawdopodobnie innych platform. Posiada również showMessage
metodę wyświetlania wiadomości w macierzystym sposób dla platformy, takie jak w balonie z cute słychać trzaski w niektórych wersjach systemu Windows.
Windows i Mac –
@SanathReddy: Nie próbowałem, ale może to będzie robić to, co chcesz: https://github.com/KDE/snorenotify –
QScreen klasy (od Qt 5,0) zawierają informacje o rozmiarze ekranu (logiczne i fizyczne) orientacja oraz sygnały dla zmian.
QScreen *screen = QGuiApplication::primaryScreen();
QRect screenGeometry = screen->geometry();
int height = screenGeometry.height();
int width = screenGeometry.width();
Czy takie podejście również sugerowana dla warunkowego załadunku 'stron QML' (na przykład różne strony 'QML' dla różnych rozdzielczości ekranu/orientacji) zarówno w systemie Android, jak i Linux (Desktop/Embedded)? – KernelPanic
Bądź ostrożny, to prawdopodobnie lepiej użyć geometrii _available_: http://doc.qt.io/qt-5/qdesktopwidget.html#availableGeometry –
myślę, że może być zainteresowany w QDesktopWidget :: rozmiarze() Metoda zamiast: dla mnie, która zwróci rozmiar dwóch monitorów ułożonych razem, ponieważ są skonfigurowane w ustawieniach wyświetlania. Wywołanie "screenGeometry" daje tylko wymiary jednego monitora. –