弹出窗口Mac OS在Qt

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了弹出窗口Mac OS在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上的结果:

enter image description here

以下是Mac上的结果:

enter image description here

我在两个屏幕截图上圈出了托盘图标,以便您可以看到托盘图标的样子。尝试单击弹出窗口以查看会发生什么。您可以使用代码来更改消息和图像,以真正了解代码的工作原理。

以上是关于弹出窗口Mac OS在Qt的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Mac OS X 10.6 的 Finder 中禁用“USB Over Current Notification”弹出窗口?

如何在 Mac OS 的命令行中编译 Qt 代码

在 Mac OS X El Capitan 上使用 xlwings 打开 Excel 文件需要弹出授予访问权限

Mac OS X 上的 Qt 库和源代码安装在哪里?

在 Mac OS 下使用 Qt-creator 调试时如何进入 Qt 的源代码

PySide 全屏 Mac os x 小部件