c++ - Qtでマウスイベントが発生したときに呼び出される関数の宣言

原文 c++ qt mouseevent qpainter

Qtの初心者ですが、次のコードを実行すると、これらのエラーが発生しました。



いいえvoid MainWindow::mousePressEvent(QMouseEvent * f)メンバー関数がクラス 'mainwindow'で宣言されています。
いいえvoid void MainWindow::paintEvent(QPaintEvent * e)メンバー関数がクラス 'mainwindow'で宣言されています。



コードはmain.cppファイルに記述されており、mainwindow.cppまたはmainwindow.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();
}
答え
ヘッダーには:

protected:

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


以下が含まれます:

#include <QMouseEvent>
#include <QPaintEvent>


また、コードはmainwindow.cpp(paintEvent、および別のメンバー関数)で記述する必要があります。多くのクラスがある場合、main.cppは非常に読みにくくなる可能性があります。
関連記事

c++ - リンクリストで変更されたデータはメモリに反映されません

c++ - C++とFortranの並列MM速度差ループタイリング

c++ - カスタムデータ型は、可変サイズの効率のための可能で実行可能なオプションですか?

c++ - このC++プログラムにコマンドライン入力を与える方法

c++ - OpenCVでのレーン検出器分割線C++

c++ - 誤った値を返す二重ハッシュ関数

c++ - C++プロキシDLL(64ビット)

java - Android Gstreamer SDKでANativeWindow_lockがエラー-22を返す

c++ - doxygenの「ファイルドキュメント」リストから「README.md」を除外します

java - 最小の「XOR」演算でバイナリマトリックスを再作成する