Dimpik
@Dimpik

Qt ошибка: C2664 сигналы и слоты. Как решить?

Пишу код и вылазиет ошибка, связанная с сигналами и слотами. Код ошибки: view.cpp:29: error: C2664: "QMetaObject::Connection QObject::connect(const QObject *,const char *,const QObject *,const char *,Qt::ConnectionType)": ­Ґў®§¬®¦­® ЇаҐ®Ўа §®ў вм  аЈг¬Ґ­в 2 Ё§ "void (__cdecl QTimer::* )(QTimer::QPrivateSignal)" ў "const char *" . Ошибку выдает файл view.cpp. Помогите решить.

view.h:

#pragma once

#include <QGraphicsView>
#include <QGraphicsScene>
#include <QObject>

#include "player.h"
#include "virus.h"

class View :public QGraphicsView
{
public:
    View();
    void view_elements();

public slots:
    void addVirus();
    void deleteVirus();


private:
    QGraphicsScene mainScene;
    Player pl;
    Virus vir;
    View *v;
    QTimer     *timer; // Таймер
    QTimer *createVirus;


};


view.cpp

#include "view.h"
#include "player.h"

#include <QObject>
#include <QTimer>

View::View()
{

    setWindowTitle("Space Rangers");

    setRenderHint(QPainter::Antialiasing);

    setFrameStyle(0);
    setSceneRect(0, 0, 500,600);
    setFixedSize(500, 600);



    mainScene.setItemIndexMethod(QGraphicsScene::NoIndex);
    setScene(&mainScene);

    timer = new QTimer();
    connect(timer, &QTimer::timeout, &pl, &Player::moving);
    connect(timer, &QTimer::timeout, &vir, &Virus::moving);
    timer->start(1000 / 50);
    view_elements();

    connect(createVirus, &QTimer::timeout, v, View::addVirus());
    createVirus->start(40000);

}

void View::view_elements(){

    pl.setPos(205, 400);
    mainScene.addItem(&pl);
}

void View::addVirus(){
    
    Virus *virus = new Virus();
    mainScene.addItem(virus);  
    virus->setPos((qrand() % (251)) * ((qrand()%2 == 1)?1:-1),0);
}

Обратитие внимание на строчку :
connect(createVirus, &QTimer::timeout, v, View::addVirus());
  • Вопрос задан
  • 51 просмотр
Решения вопроса 1
IGHOR
@IGHOR Куратор тега Qt
Qt/C++ DEV/CTO
connect(createVirus, &QTimer::timeout, v, &View::addVirus);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы