#ifndef PLAY_SYSTEM_H
#define PLAY_SYSTEM_H
#include <QMainWindow>
#include <QMediaPlayer>
#include <QMediaPlaylist>
QT_BEGIN_NAMESPACE
class Qlabel;
class QMediaPlayer;
class QMediaPlaylist;
class QVideoWidget;
class QPushbutton;
class QSlider;
QT_END_NAMESPACE
class ListMode;
class VideoMode;
class play_system : public QMainWindow{
Q_OBJECT
public:
play_system(QWidget *parent = nullptr);
~play_system();
signals:
private slots:
QMediaPlayer *myplayer = nullptr;//播放器
QMediaPlaylist *myplaylist = nullptr;//播放列表
QVideoWidget *myvideoWidget = nullptr;//播放窗口
_ListMode *myplaylistmode = nullptr;****_
};
#endif // PLAY_SYSTEM_H
用listmode创建myplaylistmode
#include "play_system.h"
#include "./sub_systems/controlmode.h"
#include "./sub_systems/listmode.h"
#include "./sub_systems/videomode.h"
#include <QMediaService>
#include <QMediaPlaylist>
#include <QMediaMetaData>
#include <QtWidgets>
play_system::play_system(QWidget *parent)
: QMainWindow(parent)
{
myplayer = new QMediaPlayer(this);
myplayer->setAudioRole(QAudio::VideoRole);
myplaylist = new QMediaPlaylist();
myplayer->setPlaylist(myplaylist);
myvideoWidget = new videomode(this);
myplayer->setVideoOutput(myvideoWidget);//设置视频输出
_myplaylistmode = new listmode(this);****_
}
用 new 结果报错 invalid new-expression of abstract class type 'listmode' myplaylistmode = new listmode(this);
以下是listmode的内容
#ifndef LISTMODE_H
#define LISTMODE_H
#include <QAbstractItemModel>
#include <QScopedPointer>
QT_BEGIN_NAMESPACE
class QMediaPlaylist;
QT_END_NAMESPACE
class listmode : public QAbstractItemModel
{
Q_OBJECT
public:
enum Column
{
Title = 0,
ColumnCount
};
explicit listmode(QObject *parent = nullptr);
~listmode();
QMediaPlaylist *playlist;
private:
QScopedPointer<QMediaPlaylist> myplaylist;
QMap<QModelIndex,QVariant> mydata;
};
#endif // LISTMODE_H
listmode.h文件
#include "listmode.h"
#include <QFileInfo>
#include <QUrl>
#include <QMediaPlaylist>
listmode::listmode(QObject *parent)
: QAbstractItemModel(parent)
{
}
listmode::~listmode()
{
}
.cpp文件
查资料视乎是该基类中的函数存在纯虚函数的问题,但我不知道如何修改