I have two widgets, one of then bears the button-press handler methods and emits some signals, the second is supposed to receive them.
The handlers are called, the connect(...) function that connects the signals from the first widget with the slots of the second returns (1), but the slots are not called. How can i fix it?
Here's the code:
first widget:
#ifndef PLAYLISTCONTROLBUTTONWIDGET_H
#define PLAYLISTCONTROLBUTTONWIDGET_H
#include <QWidget>
#include "ui_playlistcontrolbuttonwidget.h"
using namespace Ui;
#include <iostream>
using namespace std;
class PlaylistControlButtonWidget
: public QWidget,
public PlaylistControlButtonWidgetClass
{
Q_OBJECT
public:
PlaylistControlButtonWidget
(QWidget *parent
= 0);
~PlaylistControlButtonWidget();
private slots:
void on_seekSlider_valueChanged(int);
void on_prevButton_clicked();
void on_playRandomButton_clicked();
void on_nextButton_clicked();
void on_playButton_clicked();
void on_stopButton_clicked();
void on_pauseButton_clicked();
signals:
void Pause(void);
void Stop(void);
void Play(void);
void Prev(void);
void Rand(void);
void Next(void);
void SeekSliderChanged(int pos, int total);
};
#endif // PLAYLISTCONTROLBUTTONWIDGET_H
#ifndef PLAYLISTCONTROLBUTTONWIDGET_H
#define PLAYLISTCONTROLBUTTONWIDGET_H
#include <QWidget>
#include "ui_playlistcontrolbuttonwidget.h"
using namespace Ui;
#include <iostream>
using namespace std;
class PlaylistControlButtonWidget : public QWidget, public PlaylistControlButtonWidgetClass
{
Q_OBJECT
public:
PlaylistControlButtonWidget(QWidget *parent = 0);
~PlaylistControlButtonWidget();
private slots:
void on_seekSlider_valueChanged(int);
void on_prevButton_clicked();
void on_playRandomButton_clicked();
void on_nextButton_clicked();
void on_playButton_clicked();
void on_stopButton_clicked();
void on_pauseButton_clicked();
signals:
void Pause(void);
void Stop(void);
void Play(void);
void Prev(void);
void Rand(void);
void Next(void);
void SeekSliderChanged(int pos, int total);
};
#endif // PLAYLISTCONTROLBUTTONWIDGET_H
To copy to clipboard, switch view to plain text mode
#include "playlistcontrolbuttonwidget.h"
PlaylistControlButtonWidget
::PlaylistControlButtonWidget(QWidget *parent
){
setupUi(this);
}
PlaylistControlButtonWidget::~PlaylistControlButtonWidget()
{
}
void PlaylistControlButtonWidget::on_pauseButton_clicked()
{
emit Pause();
}
void PlaylistControlButtonWidget::on_stopButton_clicked()
{
emit Stop();
}
void PlaylistControlButtonWidget::on_playButton_clicked()
{
cout << "PLY"<<endl;
emit Play();
}
void PlaylistControlButtonWidget::on_nextButton_clicked()
{
emit Next();
}
void PlaylistControlButtonWidget::on_playRandomButton_clicked()
{
emit Rand();
}
void PlaylistControlButtonWidget::on_prevButton_clicked()
{
emit Prev();
}
void PlaylistControlButtonWidget::on_seekSlider_valueChanged(int pos)
{
emit SeekSliderChanged(pos, 1000);
}
#include "playlistcontrolbuttonwidget.h"
PlaylistControlButtonWidget::PlaylistControlButtonWidget(QWidget *parent)
: QWidget(parent)
{
setupUi(this);
}
PlaylistControlButtonWidget::~PlaylistControlButtonWidget()
{
}
void PlaylistControlButtonWidget::on_pauseButton_clicked()
{
emit Pause();
}
void PlaylistControlButtonWidget::on_stopButton_clicked()
{
emit Stop();
}
void PlaylistControlButtonWidget::on_playButton_clicked()
{
cout << "PLY"<<endl;
emit Play();
}
void PlaylistControlButtonWidget::on_nextButton_clicked()
{
emit Next();
}
void PlaylistControlButtonWidget::on_playRandomButton_clicked()
{
emit Rand();
}
void PlaylistControlButtonWidget::on_prevButton_clicked()
{
emit Prev();
}
void PlaylistControlButtonWidget::on_seekSlider_valueChanged(int pos)
{
emit SeekSliderChanged(pos, 1000);
}
To copy to clipboard, switch view to plain text mode
and the second:
#ifndef PLAYLISTVIEWWIDGET_H
#define PLAYLISTVIEWWIDGET_H
#include <QtGui/QtGui>
#include <QtCore/QtCore>
#include <QWidget>
#include "ui_playlistviewwidget.h"
#include "playlistcontrolbuttonwidget.h"
using namespace Ui;
#include <iostream>
using namespace std;
class PlaylistViewWidget
: public QWidget,
public PlaylistViewWidgetClass
{
Q_OBJECT
public:
PlaylistViewWidget
(QWidget *parent
= 0);
~PlaylistViewWidget();
public slots:
void OnCurrentChanged(int newTabIndex);
void OnPlay();//обработчики
void OnNext();
void OnPrev();
void OnRand();
void OnPause();
void OnSeek(int pos, int total);
signals:
void CurrentPlaylistChanged(int newTabId);
void CurrentTrackChanged(int newTrackId);
void PlayCurrent();
void PauseUnpause();
};
#endif // PLAYLISTVIEWWIDGET_H
#ifndef PLAYLISTVIEWWIDGET_H
#define PLAYLISTVIEWWIDGET_H
#include <QtGui/QtGui>
#include <QtCore/QtCore>
#include <QWidget>
#include "ui_playlistviewwidget.h"
#include "playlistcontrolbuttonwidget.h"
using namespace Ui;
#include <iostream>
using namespace std;
class PlaylistViewWidget : public QWidget, public PlaylistViewWidgetClass
{
Q_OBJECT
public:
PlaylistViewWidget(QWidget *parent = 0);
~PlaylistViewWidget();
QTableView* tableView;
QWidget* playlistControlsWidget;
QToolBar* playbackToolBar;
QMenu* playbackMenu;
public slots:
void OnCurrentChanged(int newTabIndex);
void OnPlay();//обработчики
void OnNext();
void OnPrev();
void OnRand();
void OnPause();
void OnSeek(int pos, int total);
signals:
void AddTracksRequest(QStringList trackPaths);
void CurrentPlaylistChanged(int newTabId);
void CurrentTrackChanged(int newTrackId);
void PlayCurrent();
void PauseUnpause();
};
#endif // PLAYLISTVIEWWIDGET_H
To copy to clipboard, switch view to plain text mode
#include "playlistviewwidget.h"
PlaylistViewWidget
::PlaylistViewWidget(QWidget *parent
){
setupUi(this);
playlistControlsWidget = new PlaylistControlButtonWidget;
cout << "@@@"<<endl;
// void OnPlay();//обработчики
// void OnNext();
// void OnPrev();
// void OnRand();
// void OnPause();
// void OnSeek(int pos);
playbackToolBar
= new QToolBar("Playback Toolbar");
playbackToolBar->addWidget(playlistControlsWidget);
cout <<connect(playlistControlsWidget, SIGNAL(Play()), this, SLOT(OnPlay()) )<<endl;
cout << connect(playlistControlsWidget, SIGNAL(Next()), this, SLOT(OnNext()) )<<endl;
cout << connect(playlistControlsWidget, SIGNAL(Prev()), this, SLOT(OnPrev()) )<<endl;
cout << connect(playlistControlsWidget, SIGNAL(Rand()), this, SLOT(OnRand()) )<<endl;
cout << connect(playlistControlsWidget, SIGNAL(Pause()), this, SLOT(OnPause()) )<<endl;
cout << connect(playlistControlsWidget, SIGNAL(SeekSliderChanged(int, int)), this, SLOT(OnSeek(int, int)) )<<endl;
cout << connect(playlistTabWidget, SIGNAL(currentChanged(int)), this, SLOT(OnCurrentChanged(int)))<<endl;
}
PlaylistViewWidget::~PlaylistViewWidget()
{
}
void PlaylistViewWidget::OnCurrentChanged( int newTabIndex)
{
exit(-1);
cout << "CurChan "<<newTabIndex<<endl;
}
void PlaylistViewWidget::OnPlay()
{
exit(-1);
cout << "play "<<endl;
}
void PlaylistViewWidget::OnNext()
{
cout << "nxt "<<endl;
}
void PlaylistViewWidget::OnPrev()
{
cout << "prev "<<endl;
}
void PlaylistViewWidget::OnRand()
{
cout << "rand "<<endl;
}
void PlaylistViewWidget::OnPause()
{
cout << "pause "<<endl;
}
void PlaylistViewWidget::OnSeek( int pos, int total )
{
cout << "seek "<<pos<<endl;
}
#include "playlistviewwidget.h"
PlaylistViewWidget::PlaylistViewWidget(QWidget *parent)
: QWidget(parent)
{
setupUi(this);
playlistControlsWidget = new PlaylistControlButtonWidget;
cout << "@@@"<<endl;
// void OnPlay();//обработчики
// void OnNext();
// void OnPrev();
// void OnRand();
// void OnPause();
// void OnSeek(int pos);
playbackToolBar = new QToolBar("Playback Toolbar");
playbackToolBar->addWidget(playlistControlsWidget);
cout <<connect(playlistControlsWidget, SIGNAL(Play()), this, SLOT(OnPlay()) )<<endl;
cout << connect(playlistControlsWidget, SIGNAL(Next()), this, SLOT(OnNext()) )<<endl;
cout << connect(playlistControlsWidget, SIGNAL(Prev()), this, SLOT(OnPrev()) )<<endl;
cout << connect(playlistControlsWidget, SIGNAL(Rand()), this, SLOT(OnRand()) )<<endl;
cout << connect(playlistControlsWidget, SIGNAL(Pause()), this, SLOT(OnPause()) )<<endl;
cout << connect(playlistControlsWidget, SIGNAL(SeekSliderChanged(int, int)), this, SLOT(OnSeek(int, int)) )<<endl;
cout << connect(playlistTabWidget, SIGNAL(currentChanged(int)), this, SLOT(OnCurrentChanged(int)))<<endl;
}
PlaylistViewWidget::~PlaylistViewWidget()
{
}
void PlaylistViewWidget::OnCurrentChanged( int newTabIndex)
{
exit(-1);
cout << "CurChan "<<newTabIndex<<endl;
}
void PlaylistViewWidget::OnPlay()
{
exit(-1);
cout << "play "<<endl;
}
void PlaylistViewWidget::OnNext()
{
cout << "nxt "<<endl;
}
void PlaylistViewWidget::OnPrev()
{
cout << "prev "<<endl;
}
void PlaylistViewWidget::OnRand()
{
cout << "rand "<<endl;
}
void PlaylistViewWidget::OnPause()
{
cout << "pause "<<endl;
}
void PlaylistViewWidget::OnSeek( int pos, int total )
{
cout << "seek "<<pos<<endl;
}
To copy to clipboard, switch view to plain text mode
Bookmarks