QT5使用消息机制及程序发布相关

  一、QT5使用消息机制:

   之前闲得无聊想用QT写个笔记本警报软件随便玩玩,大致思路是拔掉笔记本电源或拔掉USB设备就会触发响铃或发

短信到手机,然后网上查了下就找到了消息机制。

   QT5中用nativeEvent实现消息机制

protected:
    bool nativeEvent(const QByteArray &eventType, void *message, long *result);

bool MainWindow::nativeEvent(const QByteArray &eventType, void *message, long *result)
{
    if (eventType == "windows_generic_MSG")//Windows平台标志
    {
        PMSG msg = (PMSG)message;

        if(msg->message == WM_KEYDOWN || msg->message == WM_SYSKEYDOWN)
        {
            //qDebug()<<msg->wParam; //区分具体哪个按键,详情百度“Virtual-Key Codes”
	    //qDebug()<<msg->lParam;
            //qDebug()<<"按键消息";
	}
	if (msg->message == WM_POWERBROADCAST)
        {
            if(msg->wParam == PBT_APMPOWERSTATUSCHANGE)
            {
                //qDebug()<<"电源状态改变";
            }
        }
    }
    return false;//如果你想要停止事件,返回true并设置result。如果你返回false,则将事件转换为Qt事件并将其发送给widget
}

注:使用消息机制请包含必要的头文件如windows.h等。Windows平台可使用函数 BO0L PostMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam)发送消息,其中第一个参数在QT中可写为(HWND)this->winId()。

详情参考官方文档以及各平台消息类型



二、QT5程序发布相关:

  • VS集成Qt环境搭建
  • Qt之开机自启动及拥有管理员权限
  • 为QT应用程序添加图标:

(1) 找到一张ico图片*.ico,名字改为myapp.ico;

(2) 创建一个新的文本文档,编辑内容为 IDI_ICON1  ICON  DISCARDABLE   "myapp.ico" 并将文件重命名为myapp.rc;

(3) 在myapp.pro项目文件最后加上RC_FILE = myapp.rc,重新生成之后,就修改成功了


  • Windows平台动态发布程序:

(1)使用进程检查工具 Process Explorer 来查看程序加载的dll:

参考:QT编译发布程序后报错如缺少dll、“应用程序无法正常启动(0xc000007b)”的可能解决方法

(2)使用 Dependency Walker 检查程序依赖项

参考:Qt之打包发布(NSIS详解)

你可能感兴趣的:(Win32,qt,qt5)