2011-04-10 44 views
0
QList<QPoint*> DrawingWidget::getCloseLinesById(int m_x, int m_y) { 
    QList<QPoint*> lines; 
    // HERE I APPEND ABOUT 5 ITEMS 

    return lines; 
} 

这里的附加工作。它只给了我几个警告,但它仍然编译。警告是。Qt创建者C++,void值不会被忽略,因为它应该是

taking address of temporary 

但这

void DrawingWidget::mouseMoveEvent(QMouseEvent *event) { 
    if(m_mainWindow->getSelectedTool() == MainWindow::moveVertexTool) { 
     m_x = event->x(); 
     m_y = event->y(); 
      QList<QPoint*> points = getCloseLinesById(event->x(), event->y()); 
      for(int i = 0; i < points.size(); i++) { 
       *points[i]->setX(event->x()); //error on this line 
       *points[i]->setY(event->y()); // error on this line 
      } 
      update(); 
     } 
    } 
} 

导致这些错误:

void value not ignored as it ought to be 
void value not ignored as it ought to be 

所以它给出了两行相同的错误。

当我移动鼠标时,这段代码应该基本上移动我的行。

我该如何解决这个问题?

回答

3

你没有说明你的问题究竟是什么。但是,你正在使用额外*在出错行:

points[i]->setX(event->x()); 

而且,你没告诉你如何添加到列表中。我的猜测是警告来自您分配一些计算QPoints的地址。即使你编译它也会崩溃。只需使用QList<QPoint>。这并不重要。

1

如果您取消引用points[i],您将收到一个类型为QPoint&的对象。您不能在非指针类型上使用->运算符(除非该类型提供了->运算符的自定义定义)。

因此,在这两行前删除*应该修复错误。

的原因奇怪的错误信息是,->*的优先级高,所以编译器实际上是尝试取消引用setX/setY返回值。

1

'服用暂住地'是非常严重的病症。

您也不必要地解除引用其他两个错误。

相关问题