一般来说,我们使用Qt构建应用程序时,在主窗口的左上方会有一个app图标以及标题,双击图标,程序会自动关闭,单击图标,则会出现一个下拉菜单.那么如果不愿意有这个下拉菜单,我们应该怎么办呢?
直接方法是,重构父类的函数
bool MMainWindow::winEvent(MSG *message, long *result)
{
if( message->message == WM_SYSCOMMAND)
{
if( 61587 ==message->wParam )//禁用单击
{
return true;//表明该消息已经得到处理,无需继续分发
}
if( 61539 ==msg->wParam )//禁用双击
{
return true;
}
}
return QMainWindow::winEvent(message,result);
}
注意,需要在包含两个特殊头文件:
#include <windows.h>
#include <windowsx.h>
2019.1.26 13:49更新
Qt 5.5.1 版本
bool MainWindow::nativeEvent(const QByteArray &eventType, void *message, long *result)
{
MSG *msg = (MSG *)message;
if( msg->message == WM_SYSCOMMAND)
{
if( 61587 ==msg->wParam )//禁用单击
{
return true;
}
if( 61539 ==msg->wParam )//禁用双击
{
return true;
}
}
QMainWindow::nativeEvent(eventType, message, result);
}
后续: Qt5.11.1的与上面两个版本不一样,代码不可使用,后面再追加.