[英]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 上的結果:
我在兩個屏幕截圖上都圈出了托盤圖標,這樣您就可以看到托盤圖標的樣子。 嘗試單擊彈出窗口以查看會發生什么。 您可以使用代碼來更改消息和圖像,以真正了解代碼的工作原理。
您可以使用QMenu
、 QAction
和TrayIcon
來執行此操作。
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.