Slotoproblem

0

Głupio jest 4 dni być na forum i ciągle pytać w praktyce o to samo . Ale kto pyta nie błądzi . Cóż zaczę od kodu ( w praktyce to co przy poprzednich razach ale z usprawnieniami ) .

main.cpp

 

#include <QtGui>
#include <iostream>
#include "okno.hpp"
#include "QtCore"
#include <SFML/Audio.hpp>


int main( int argc, char * argv[] )
{
    QApplication program( argc, argv );
    QTextCodec::setCodecForCStrings( QTextCodec::codecForName( "UTF-8" ) );


    oknogl okno;
    okno.show();



    return program.exec();
}


oknogl.cpp

 

#include "okno.hpp"
#include "QtGui"
#include <SFML/Audio.hpp>
#include "QtCore"



oknogl::oknogl( )
{

    setWindowTitle( "Odtwarzacz" );
    setGeometry(100 , 100 , 500 , 100 );
    przycisk = new QPushButton( "Wyjście", this );


    start = new QPushButton("Odtwarzaj", this) ;



    otzam = new QPushButton("Otwórz Plik" , this) ;

   // wskaźnik stanu utworu
    stan = new QSlider(Qt::Horizontal , this );


    etykieta = new QLabel("" , this ) ;
//Porządkowanie Tałatajstwa

    wiersz = new QHBoxLayout ;
    wiersz ->addWidget(start);

    wiersz ->addWidget(otzam);
    wiersz->addWidget(stan);
    wiersz->addWidget(przycisk);
setCentralWidget(etykieta);
wiersz->setSpacing(8);
    centralWidget()->setLayout(wiersz);

   connect(otzam, SIGNAL(clicked()), this , SLOT(otwieranie())) ;

    if(!muzyka.Playing)
    {
     connect(start , SIGNAL(clicked()) , this , SLOT(graj())) ;
    };

    if(muzyka.Playing)
    {
         connect(start , SIGNAL(clicked()) , this , SLOT(przerwij())) ;
    };

    connect(stan , SIGNAL(sliderMoved()) ,this ,SLOT(zpol())) ;
};
/////////////////////////
// Kolejna częśc Klasy //
/////////////////////////
void oknogl::otwieranie()
{

   QString plik = QFileDialog::getOpenFileName(this, tr("Otwórz Plik"), QDesktopServices::storageLocation(QDesktopServices::MusicLocation));



if(plik.isEmpty())
    return  ;

if(!plik.isEmpty())
{
QString * a ;
a = &plik ;
const string b = a->toStdString() ;


::muzyka.OpenFromFile( b ) ;

stan->setRange( 0 , muzyka.GetDuration() ) ;


}




};

/////////////////////////
// Kolejna częśc Klasy //
/////////////////////////

void oknogl::graj()
{

    ::muzyka.Play();

};

/////////////////////////
// Kolejna częśc Klasy //
/////////////////////////

void oknogl::przerwij()
{
  ::muzyka.Pause();
};

/////////////////////////
// Kolejna częśc Klasy //
/////////////////////////

void oknogl::zpol()
{
  // Do Zrobienia .
}


i na koniec oknogl.hpp


#ifndef okno_HPP
#define okno_HPP

#include <QtGui>
#include <QApplication>
#include <SFML/Audio.hpp>


using namespace std;

extern int z ;
namespace {
    sf::Music muzyka ;
};

class oknogl : public QMainWindow
{
public:
    oknogl();
QHBoxLayout * wiersz ;
const QString * nazwa ;


public slots:
 void otwieranie();
 void graj() ;
 void przerwij() ;
 void zpol() ;

private:
    QPushButton * przycisk;
    QLabel * etykieta;
    QSlider * stan ;
    QPushButton * start ;
    QPushButton * otzam ;
    QMessageBox * blad ;

};

#endif // oknogl_HPP

 

Cóż niby ładnie się kompiluje i było by git . Gdyby nie to że te przyciski nie działają .
Przy okazji wyrzuca :
" Object: No such slot QMainWindow::otwieranie()
oraz
Object: No such slot QMainWindow::przerwij() "
I teraz nie wiem w czym jest problem ze "Słodziutką " czy "Prostą , Szybką Multimedialną " . Jako że ciągle się uczę Qt korzystałem z tego tutorialu :
http://blog.matthew.org.pl/2009/06/03/kurs-qt-czesc-1-sygnaly-sloty-i-wlasne-widgety/
Oraz dokumentacji tak więc pytam się w której części jest błąd ?

1
class oknogl : public QMainWindow
{
Q_OBJECT
public:
//dalszy kod
0

Eh cóż teraz zaczęło wywalać pełno : undefined reference to vtable for oknogl .

2

Spróbuj dać polecenie qmake, a dopiero później make.

1 użytkowników online, w tym zalogowanych: 0, gości: 1