• 2267阅读
  • 1回复

[提问]QT中的winEvent与nativeEvent [复制链接]

上一主题 下一主题
离线suzhuorui
 

只看楼主 倒序阅读 楼主  发表于: 2020-08-07
Qt中的winEvent与nativeEvent到底如何使用,或者说里面的参数message->message的值有哪些,分别是什么意思。result的意义是什么,有哪些值,分别是什么意义。
如何在winEvent中判断鼠标左键是否按下。
  1. bool MainWindow::winEvent(MSG *message, long *result)
  2. {
  3.     switch (message->message) {
  4.     case WM_NCHITTEST:
  5.         qDebug()<<"winEvent";
  6.         int xPos = GET_X_LPARAM(message->lParam) - this->frameGeometry().x();
  7.         int yPos = GET_Y_LPARAM(message->lParam) - this->frameGeometry().y();
  8.         //处理鼠标位置样式与点击后拖拽
  9.         //QPoint p(xPos,yPos);
  10.         //this->setMouseStyle(getMouseArea(p),p);
  11.         //处理鼠标点击标题
  12.         QWidget* pt = this->childAt(xPos, yPos);
  13.         if (pt == ui->title) {
  14.             *result = HTCAPTION;
  15.             return true;
  16.         }
  17.     }
  18.     return false;
  19. }
上面代码是用来检测是否点击自定义的标题栏,而且可以点击标题栏后拖动窗口,双击标题栏最大化窗口。但是,为什么呢?怎么实现的?
我知道WM_NCHITTEST是鼠标事件(鼠标按下移动和释放等),那怎么在其中检测鼠标左键按下呢?

离线mh_0915

只看该作者 1楼 发表于: 2020-08-07
Qt4 到Qt5 winEvent被nativeEvent代替了,你单纯想检测鼠标事件可以直接在mouseEvent里面判断
生活与技术
思想与思考
快速回复
限100 字节
 
上一个 下一个