错误的含义是什么:'ev->QMouseEvent::pos'没有类类型

What is meaning of error: 'ev->QMouseEvent::pos' does not have class type

本文关键字:pos 类型 QMouseEvent ev- 是什么 错误 gt      更新时间:2023-10-16

我在Qt中编程,在事件处理程序之间我写了这样的代码:

void PaintedTextBrowser::mouseMoveEvent(QMouseEvent *ev)
{
    ...
    QPoint *point = new QPoint(0, ev->pos.y());
    ...
}

我在编译时得到错误:

错误:"ev->QMouseEvent::pos"没有类类型

但是当我将代码修改为:

void PaintedTextBrowser::mouseMoveEvent(QMouseEvent *ev)
{
    ...
    QPoint pos = ev->pos();
    QPoint *point = new QPoint(0, pos.y());
    ...
}

它运行良好。我在这里缺少的概念是什么?

错误很明显,实际上QMouseEvent::pos不是一个类,它是一个返回对QPoint的引用的函数,所以不能在它上使用点运算符。

我猜你想写:

QPoint *point = new QPoint(0, ev->pos().y());
//                                   ^^
//                     note the parentheses

似乎缺少括号:

void PaintedTextBrowser::mouseMoveEvent(QMouseEvent *ev)
{
    ...
    QPoint *point = new QPoint(0, ev->pos().y());
    //                                   ^^
    ...
}