声明在Qt中发生鼠标事件时调用的函数

时间:2014-11-29 08:26:54

标签: c++ qt mouseevent qpainter

当我运行以下代码时,我是Qt的初学者,我遇到了这些错误:

  
      
  • no void MainWindow :: mousePressEvent(QMouseEvent * f)在类'mainwindow'中声明的成员函数。
  •   
  • no void void MainWindow :: paintEvent(QPaintEvent * e)成员函数在类'mainwindow'中声明。
  •   

代码写在main.cpp文件中,我没有在mainwindow.cppmainwindow.h中写任何内容 Qt代码:

#include <QtGui/QApplication>
#include "mainwindow.h"
#include <QEvent>
#include <QMouseEvent>
#include <QPainter>
void MainWindow::mousePressEvent(QMouseEvent *f)
{
    QPoint point=f->pos();
    int y=1;
    update();
}
void MainWindow::paintEvent(QPaintEvent *e)
{
    int y;
    QPoint point;
    QPainter painter(this);
    QPen linepen(Qt::red);
    linepen.setCapStyle(Qt::RoundCap);
    linepen.setWidth(30);
    painter.setRenderHint(QPainter::Antialiasing,true);
    painter.setPen(linepen);
    if(y==1)
        painter.drawPoint(point);

}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;

w.show();
return a.exec();
}

1 个答案:

答案 0 :(得分:0)

标题应为:

protected:

void mousePressEvent(QMouseEvent *f);
void paintEvent(QPaintEvent *e);

并包括:

#include <QMouseEvent>
#include <QPaintEvent>

此外,您应该在mainwindow.cpppaintEvent和其他成员函数)中编写代码。如果您将有许多课程,那么您的main.cpp可能非常难以理解。