что то очень туго идет, вроде такая простая концепция, но на деле, что то очень сложно
вот листинг, вроде и слот подсоединен к сигналу, но почему то не вызывается слот
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <phonon>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow {
Q_OBJECT
public:
QStringList MetaData;
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
protected:
void changeEvent(QEvent *e);
private:
Ui::MainWindow *ui;
private slots:
void on_pushButton_clicked();
void Slot_MainWindow_metaDataChanged();
};
#endif // MAINWINDOW_H
main.cpp
#include <QtGui/QApplication>
#include "mainwindow.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
a.setApplicationName("SimplePlayer");
MainWindow w;
w.show();
return a.exec();
}
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QtCore/QtDebug>
#include <phonon>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::changeEvent(QEvent *e)
{
QMainWindow::changeEvent(e);
switch (e->type()) {
case QEvent::LanguageChange:
ui->retranslateUi(this);
break;
default:
break;
}
}
void MainWindow::Slot_MainWindow_metaDataChanged()
{
qDebug() << MetaData;
}
void MainWindow::on_pushButton_clicked()
{
Phonon::MediaObject media;
QObject::connect(&media, SIGNAL(metaDataChanged()), this, SLOT(Slot_MainWindow_metaDataChanged()));
media.setCurrentSource(Phonon::MediaSource("morcheeba.ogg"));
MetaData << media.metaData(Phonon::ArtistMetaData);
MetaData << media.metaData(Phonon::AlbumMetaData);
MetaData << media.metaData(Phonon::TitleMetaData);
MetaData << media.metaData(Phonon::DateMetaData);
}
Пользователь решил продолжить мысль 19 Июня 2010, 21:06:21:
черт возьми
что то сделал, видимо добавил в редакторе ресурсов сигнал и стал вызываться слот,....но только один раз, первый, и когда еще список не заполнен, но он почему то заполняется после, а уже тогда слот не вызывается. Сума сойти можно
, не понимаю в чем может быть косяк.
Пользователь решил продолжить мысль 20 Июня 2010, 01:27:05:
сотворил наконец, но что я сделал, иначе как шаманством не назовешь, все равно нуждаюсь в ответе
Это кусок кода, on_ScanThisPath_clicked()-слот нажатия кнопочки, MainWindow_slot_MediaData()- слот соединенный с сигналом metaDataChanged()
void MainWindow::on_ScanThisPath_clicked()
{
media.setCurrentSource(Phonon::MediaSource("morcheeba.ogg"));
if(MetaData.size()==0)
{
MetaData << media.metaData(Phonon::ArtistMetaData);
MetaData << media.metaData(Phonon::AlbumMetaData);
MetaData << media.metaData(Phonon::TitleMetaData);
MetaData << media.metaData(Phonon::DateMetaData);
}
if(MetaData.size()!=0) MyPrintMetaData();
}
void MainWindow::MyPrintMetaData(){qDebug() << MetaData;};
void MainWindow::MainWindow_slot_MediaData()
{
GettingMetaDataYesNo=1;
on_ScanThisPath_clicked();
}