-
去原项目拷下来
wintoastlib.h
及wintoastlib.cpp
。 -
丢进项目目录里分别注册为头文件和源文件。
如果用CMake愿意也可以注册为外部库。做法是CMake里加上:
add_library(WinToast wintoastlib.cpp wintoastlib.h)
target_link_libraries(WinToast)
- 一个widget.cpp的配置例子:
#include "widget.h"
#include "./ui_widget.h"//Step1. 引入wintoastlib
#include "wintoastlib.h"//Step2. 构造一个CustomHandler类
class CustomHandler : public WinToastLib::IWinToastHandler {
public:void toastActivated() const {std::wcout << L"The user clicked in this toast" << std::endl;}void toastActivated(int actionIndex) const {std::wcout << L"The user clicked on button #" << actionIndex << L" in this toast" << std::endl;}void toastFailed() const {std::wcout << L"Error showing current toast" << std::endl;}void toastDismissed(WinToastDismissalReason state) const {switch (state) {case UserCanceled:std::wcout << L"The user dismissed this toast" << std::endl;break;case ApplicationHidden:std::wcout << L"The application hid the toast using ToastNotifier.hide()" << std::endl;break;case TimedOut:std::wcout << L"The toast has timed out" << std::endl;break;default:std::wcout << L"Toast not activated" << std::endl;break;}}
};Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{//Step3. 按如下方式初始化设置AUMI等以便告知Windows这是个什么程序,内容替换为您需要的WinToastLib::WinToast::instance()->setAppName(L"WinToastTest");const auto aumi = WinToastLib::WinToast::configureAUMI(L"izwb003", L"wintoast", L"WinToastTest", L"20161006");WinToastLib::WinToast::instance()->setAppUserModelId(aumi);if (!WinToastLib::WinToast::instance()->initialize()) {std::wcout << L"Error, could not initialize the lib!" << std::endl;}elsestd::cout<<"OK"<<std::endl;//Step4. 构建Toast并显示。参考原项目文档WinToastLib::WinToastTemplate templ = WinToastLib::WinToastTemplate(WinToastLib::WinToastTemplate::Text02);templ.setTextField(L"title", WinToastLib::WinToastTemplate::FirstLine);templ.setTextField(L"subtitle", WinToastLib::WinToastTemplate::SecondLine);templ.setAudioOption(WinToastLib::WinToastTemplate::Silent);const auto toast_id = WinToastLib::WinToast::instance()->showToast(templ, new CustomHandler());
}Widget::~Widget()
{delete ui;
}
以上做法adapted一下即可。