когда мой базовый класс - QIODevice, я могу повторно реализовать writeData и readData, но если базовым классом является QFile, это не работает. Базовым классом OFile является QFileDevice, а базовым классом QFileDevice является QIODevice:
//This works:
//class xyseriesiodevice : public QIODevice
//This doesn't work
class xyseriesiodevice : public QFile
{
Q_OBJECT
public:
explicit xyseriesiodevice(QXYSeries * series, QObject *parent = 0);
protected:
qint64 readData(char * data, qint64 maxSize);
qint64 writeData(const char * data, qint64 maxSize);
При звонке
//m_device is of type xyseriesiodevice
//m_audioInput is of type QAudioInput
m_device->open(QIODevice::WriteOnly);
m_audioInput->start(m_device);
writeData
из xyseriesiodevice
вызывается только тогда, когда базовым классом являетсяQIODevice
Спасибо!!
open()
? Если открыть не удается, возможно, QAudioOutput не будет вызыватьwriteData()
. - person Aurélien Gâteau   schedule 09.04.2018qtmultimedia/examples/multimedia/audioinput
) так, чтобы егоAudioInfo
подкласс класса QFile, а не QIODevice, и после этого (и после изменения метода AudioInfo :: start () для вызова open (stdout, QIODevice :: WriteOnly) ), Я вижу, что AudioInfo :: writeData () вызывается через регулярные промежутки времени с 4096-байтовыми фрагментами аудиоданных. Это под MacOS / X с Qt 5.10.0. - person Jeremy Friesner   schedule 09.04.2018