繁体   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