Есть виджет, который подает сигналы. Есть другой, который эти сигналы должен бы принять. Однако ничего не просиходит. Где у меня ошибка?
тот, кто подает:
#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
#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);
}
тот, что принимает:
#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
#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;
}
вроде как последний должен выводить на консоль текстом, если он что-то принял, но он не принимает. Выводится только "PLY", т.е. обработчик нажатия на кнопку, который должен подать сигнал из первого виджета, при том, что connect'ы возвращают 1, то есть работают. Как это все исправить?