Я не хочу дублировать код для общих методов (например, openPort, closePort и т. д.), поэтому я планирую вывести QMidiOut и QMidiIn из базового класса (
Код: Выделить всё
QMidiЯ не могу использовать классы шаблонов (
Код: Выделить всё
Q_OBJECTКласс QMidiIn:
Код: Выделить всё
#ifndef QMIDIIN_H
#define QMIDIIN_H
#include
#include "QMidi.h"
class QMidiIn : public QMidi
{
Q_OBJECT
public:
explicit QMidiIn(QObject *parent = nullptr);
~QMidiIn();
private:
RtMidiIn* rtMidiIn = nullptr;
static void callback( double deltatime, std::vector< unsigned char > *message, void *userData );
};
#endif // QMIDIIN_H
Код: Выделить всё
#ifndef QMIDIOUT_H
#define QMIDIOUT_H
#include
#include "QMidi.h"
class QMidiOut : public QMidi
{
Q_OBJECT
public:
explicit QMidiOut(QObject *parent = nullptr);
~QMidiOut();
private:
RtMidiOut* rtMidiOut = nullptr;
};
#endif // QMIDIOUT_H
Код: Выделить всё
#ifndef QMIDI_H
#define QMIDI_H
#include
#include "RtMidi.h"
class QMidi : public QObject
{
Q_OBJECT
public:
explicit QMidi(QObject *parent = nullptr) : QObject(parent) {};
void openPort( unsigned int portNumber = 0, const QString &portName = "RtMidi" ); // common methods
void closePort(); // common methods
protected:
RtMidi* rtMidi = nullptr;
};
Конструктор QMidiOut:
Код: Выделить всё
rtMidiOut = new RtMidiOut();
rtMidi = static_cast(rtMidiOut);
Код: Выделить всё
rtMidiIn = new RtMidiIn();
rtMidi = static_cast(RtMidiIn);
Подробнее здесь: https://stackoverflow.com/questions/798 ... sses-in-qt
Мобильная версия