QObject :: connect: нет такого сигнала progressbarV :: keyReleaseEvent ()

Я пытаюсь создать проект, в котором у меня есть класс progressbarV, который создает QProgressBar. Я вызываю этот класс в моем главном окне. Моя цель — перейти на другой экран, когда я нажимаю на индикатор выполнения. Я попытался реализовать KeyRleaseEvent для этой цели, но независимо от того, что я делаю, я получаю сообщение об ошибке «QObject :: connect: Нет такого сигнала progressbarV :: keyReleaseEvent ()». Я был бы очень признателен за любую помощь, которую мог получить, чтобы решить эту проблему.

Please find my code below:-

mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QWidget>
#include <QProgressBar>
#include <QLabel>
#include <QPixmap>
#include <QPushButton>
#include <QtWidgets>
#include <QProcess>

#include "headerfiles/progressbarV.h"#include "headerfiles/redzonesettingsscreen.h"
class progressbarH;

class redZoneSettingsScreen;

class MainWindow : public QMainWindow//,public QProcess
{
Q_OBJECT

private:
progressbarV *progressbar_V_left;

public:
MainWindow();
~MainWindow();

void GetObjects(redZoneSettingsScreen *);

private slots:
void handleSettingsButtonPressed();

/*protected:
virtual void keyReleaseEvent(QKeyEvent *); //Q_DECL_OVERRIDE;*/
};

#endif // MAINWINDOW_H

mainwindow.cpp

#include "headerfiles/mainwindow.h"
redZoneSettingsScreen *gotoSettingsScreen;

MainWindow::MainWindow()
{
progressbar_V_left = new progressbarV;
progressbar_V_left->setParent(this);
progressbar_V_left->setGeometry(350,200,90,450);
progressbar_V_left->setTitle("Height");
progressbar_V_left->setData(labelCurHeight->getDataValue());
progressbar_V_left->setMinVal(0);
progressbar_V_left->setMaxVal(labelMaxHeight->getDataValue());
connect(progressbar_V_left, SIGNAL (keyReleaseEvent()), this, SLOT
(handleSettingsButtonPressed()));
}

MainWindow::~MainWindow()
{
delete progressbar_V_left;
}

void MainWindow::GetObjects(redZoneSettingsScreen *button)
{
gotoSettingsScreen = button;
}

void MainWindow::handleSettingsButtonPressed()
{
gotoSettingsScreen->hide();
gotoSettingsScreen->show();
this->hide();
}

/*void MainWindow::keyReleaseEvent(QKeyEvent *event)
{

}*/

progressbarV.h

#ifndef PROGRESSBARV_H
#define PROGRESSBARV_H

#include <QWidget>
#include <QProgressBar>
#include <QLabel>
#include <QPixmap>

class progressbarV: public QWidget
{
Q_OBJECT

private:
QProgressBar *progressbar_V;
QLabel *labelRedDanger, *labelYellowWarning;
float maxScaledHeight, redZoneScaledHeight, yellowZoneScaledHeight;

int spn, spn_value;
QString title;
int data;
short minVal;
short maxVal;

public:
progressbarV();
~progressbarV();

void setSPN(int);
int getSPN();

void setSPN_Value(int);
int getSPN_Value();

void setTitle(QString);
QString getTitle();

void setData(int);
int getData();

void setMinVal(short);
short getMinVal();

void setMaxVal(short);
short getMaxVal();

/*void setLowError(short);
short getLowError();

void setLowWarning(short);
short getLowWarning();

void setHighError(short);
short getHighError();

void setHighWarning(short);
short getHighWarning();*/

QProgressBar* getProgressBarV();

protected:
void keyReleaseEvent(QKeyEvent *); //Q_DECL_OVERRIDE;

};
#endif // PROGRESSBARH_H

progressbarV.cpp

#include "headerfiles/progressbarV.h"
progressbarV::progressbarV()
{
progressbar_V = new QProgressBar;
progressbar_V->setParent(this);
progressbar_V->setStyleSheet("QProgressBar{ border: solid grey; border-
width: 6; border-radius: 12; text-align: center;},
QProgressBar::chunk{background-color: limegreen; width: 0px; margin:
0px;}");
progressbar_V->setGeometry(2,0,50,200);
progressbar_V->setOrientation(Qt::Vertical);

maxScaledHeight = (200*100)/120;
redZoneScaledHeight = 200 - ((maxScaledHeight*105)/100);
yellowZoneScaledHeight = 200 - ((maxScaledHeight*90)/100);

QPixmap mypixRed(":/images/images/redZone.png");
labelRedDanger = new QLabel;
labelRedDanger->setParent(this);
labelRedDanger->setGeometry(8,redZoneScaledHeight,38,3);
labelRedDanger->setPixmap(mypixRed);

QPixmap mypixYellow(":/images/images/yellowZone.png");
labelYellowWarning = new QLabel;
labelYellowWarning->setParent(this);
labelYellowWarning->setGeometry(8,yellowZoneScaledHeight,38,3);
labelYellowWarning->setPixmap(mypixYellow);
}

progressbarV::~progressbarV()
{
delete progressbar_V;
delete labelRedDanger;
delete labelYellowWarning;
}

void progressbarV::setSPN(int val)
{
spn = val;
}

int progressbarV::getSPN()
{
return spn;
}

void progressbarV::setSPN_Value(int val)
{
spn_value = val;
}

int progressbarV::getSPN_Value()
{
return spn_value;
}

void progressbarV::setTitle(QString mTitle)
{
title = mTitle;
}

QString progressbarV::getTitle()
{
return title;
}

void progressbarV::setData(int mData)
{
data = mData;
progressbar_V->setValue(data);
}

int progressbarV::getData()
{
return data;
}

void progressbarV::setMinVal(short mMinVal)
{
minVal = mMinVal;
progressbar_V->setMinimum(minVal);
}

short progressbarV::getMinVal()
{
return minVal;
}

void progressbarV::setMaxVal(short mMaxVal)
{
maxVal = mMaxVal;
progressbar_V->setMaximum(maxVal);
}

short progressbarV::getMaxVal()
{
return maxVal;
}

QProgressBar *progressbarV::getProgressBarV()
{
return progressbar_V;
}

void progressbarV::keyReleaseEvent(QKeyEvent *event)
{

}

Since I am new to QT, kindly give me solutions in the form of code snippets

Thanks in advance,
Sam

0

Решение

вам нужно объявить keyReleaseEvent как публичный слот

public slots:
void keyReleaseEvent(QKeyEvent *); //Q_DECL_OVERRIDE;

так что QT может подключиться к нему, используя старый стиль подключения.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]