我一直试图将这个pushButton连接到一个播放已经编码的媒体的函数。它给出了同样的错误。是的我在课程中包含了Q_Object。发生了什么
在我的主窗口中:。
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
mediafile = new Player;
connect(ui->pushButton, SIGNAL(pressed()),mediafile,SLOT(playFile(mediafile)));
}
MainWindow::~MainWindow()
{
delete ui;
}
我的课程中有q_object但是我收到错误
QObject::connect: No such slot Player::playFile(mediafile) in ../musicplayer/mainwindow.cpp:12
QObject::connect: (sender name: 'pushButton')
我不明白为什么我得到这个我在Player命名空间类
中有一个名为playFile的函数#ifndef PLAYER_H
#define PLAYER_H
#include <QMediaPlayer>
#include <QDebug>
class Player : public QMediaPlayer
{
Q_OBJECT
public:
Player();
~Player();
public slots:
void playFile(Player *);
private:
//Player file;
};
#endif // PLAYER_H
这是实施。
#include "player.h"
#include "mainwindow.h"
Player::Player() {
}
Player::~Player(){
//delete file;
}
void Player::playFile(Player* file){
file->setMedia(QUrl::fromLocalFile("Average White Band - Overture.mp3"));
file->setVolume(50);
file->play();
}
这是主窗口头文件。是否有一些我想念的东西甚至可能是关于qt
的基础知识#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <player.h>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow {
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Player *mediafile;
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
最后,如果你有一个更容易的方式,我想听听它。 但是告诉我这里我做错了什么,以后我会知道......
答案 0 :(得分:1)
插槽中使用的参数是从信号接收参数,在您的情况下,没有必要。
另一个问题是,在继承自QMediaPlayer的类中,您没有调用父构造函数,因此您必须将代码修改为以下内容:
<强> mainwindow.h 强>
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include "player.h"
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
Player *mediafile;
};
#endif // MAINWINDOW_H
<强> mainwindow.cpp 强>
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QPushButton>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
mediafile = new Player;
connect(ui->pushButton, SIGNAL(pressed()), mediafile, SLOT(playFile()));
}
MainWindow::~MainWindow()
{
delete ui;
}
<强> player.h 强>
#ifndef PLAYER_H
#define PLAYER_H
#include <QMediaPlayer>
class Player : public QMediaPlayer
{
Q_OBJECT
public:
Player(QObject *parent = Q_NULLPTR, Flags flags = Flags());
~Player();
public slots:
void playFile();
};
#endif // PLAYER_H
<强> player.cpp 强>
#include "player.h"
Player::Player(QObject *parent, Flags flags):QMediaPlayer(parent, flags)
{
}
Player::~Player()
{
}
void Player::playFile()
{
setMedia(QUrl::fromLocalFile("/home/eyllanesc/Music/Coldplay/A Rush of Blood to the Head/Track 8.mp3"));
setVolume(50);
play();
}