簡體   English   中英

Qt 中的彈出窗口 Mac OS

[英]Popup window Mac OS in Qt

我可以在 Qt 上制作彈出窗口嗎?

例如點擊

我不知道它到底是怎么稱呼的。

您可以使用QSystemTrayIcon 這會在任務欄中創建一個托盤圖標,這是通知的來源。 要顯示通知,請使用showMessage方法。 這個方法需要兩個QString參數,第一個是標題,第二個是消息。 例如,以下代碼顯示了“Hello World!” 以“標題”為標題的消息:

QSystemTrayIcon *trayIcon = new QSystemTrayIcon(button);
trayIcon->setIcon(QIcon("image.png"));
trayIcon->show();
trayIcon->showMessage("Title", "Hello World!");

您必須使用setIcon方法設置托盤圖標的圖標,否則它將不起作用。 您還必須使用show方法顯示托盤圖標。 您還可以在使用messageClicked信號單擊消息時執行某些操作。

這是一個完整的程序示例,單擊按鈕將顯示消息,單擊消息將顯示普通消息框:

#include <QApplication>
#include <QtWidgets>

int main(int argc, char **argv){
    QApplication app(argc, argv);

    QPushButton button("Show message");
    QSystemTrayIcon trayIcon;

    QObject::connect(&button, &QPushButton::clicked, [&trayIcon](){
        trayIcon.showMessage("Title", "Hello World!");    //Show the popup when the button is clicked on
    });

    QObject::connect(&trayIcon, &QSystemTrayIcon::messageClicked, [](){
        QMessageBox::information(nullptr, "", "Message Clicked");    //Show a message box when the popup is clicked on
    });

    trayIcon.setIcon(QIcon("image.png"));    //Set the tray icon icon to image.png

    trayIcon.show();    //Show the tray icon
    button.show();    //Show the button

    return app.exec();
}

這是在 Windows 上的結果:

在此處輸入圖片說明

這是 Mac 上的結果:

在此處輸入圖片說明

我在兩個屏幕截圖上都圈出了托盤圖標,這樣您就可以看到托盤圖標的樣子。 嘗試單擊彈出窗口以查看會發生什么。 您可以使用代碼來更改消息和圖像,以真正了解代碼的工作原理。

您可以使用QMenuQActionTrayIcon來執行此操作。

void Window::createTrayIcon(){
    TrayIconMenu = new QMenu(this);
    TrayIconMenu->addAction(MinimizeAction);
    TrayIconMenu->addAction(MaximizeAction);
    TrayIconMenu->addAction(RestoreAction);
    TrayIconMenu->addSeparator();
    TrayIconMenu->addAction(QuitAction);

    TrayIcon = new QSystemTrayIcon(this);
    TrayIcon->setContextMenu(TrayIconMenu);
}

我不確定如何獲得圓形氣泡的確切格式。 這可能不是 Qt 的功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM