2016-04-12 7 views
0

QProgressBarを作成するprogressbarVクラスがあるプロジェクトを作成しようとしています。私はメインウィンドウでこのクラスを呼び出しています。私の目的は、プログレスバーをクリックすると別の画面に移動することです。私はこの目的のためにKeyRleaseEventを実装しようとしましたが、私が何をするにしても、エラー "QObject :: connect:いいえそのような信号progressbarV :: keyReleaseEvent()"が得られます。私はこの問題を解決するために何か助けていただければ幸いです。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

connectコマンドは、信号をパラメータとして受け取るだけです。 keyReleaseEventはシグナルではありません。 –

+0

信号はどのように生成されますか? – Sam

+0

keyReleaseEventを処理する関数を作成し、その関数で独自のシグナルを呼び出すことができます。シグナルを定義するためのサンプルコードを参照してください。 –

答えて

0

あなたはQTは、古い接続のスタイルを使用して接続できるように、パブリックSLOT

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

としてkeyReleaseEventを宣言する必要があります。

関連する問題