Seite 1 von 1

QAudioDeviceInfo Angaben nicht korrekt

Verfasst: 4. September 2013 19:16
von MADsCIENTIST
Hallo liebe Community,

ich habe aktuell ein Problem mit der Nutzung von QAudioDeviceInfo!

Ich lese alle vom QAudioDeviceInfo-Objekt erkannten Audio-Input-Geräte
meines Rechners in eine Variable vom Typ QMap<QString, QAudioDeviceInfo> ein.

Dabei stellt der key den Gerätenamen und der Wert das entsprechende Audiogerät dar.

Sieht wie folgt aus:

Code: Alles auswählen

QMap<QString, QAudioDeviceInfo> audioDevices;

foreach(const QAudioDeviceInfo &deviceInfo, QAudioDeviceInfo::availableDevices(QAudio::AudioInput))
	audioDevices.insert(deviceInfo.deviceName(), deviceInfo);
Später nutze ich diese Map um die darin enthaltenen keys in eine QComboBox zu laden, damit
der Nutzer ein entsprechendes Audiogerät auswählen kann.

Code: Alles auswählen

if(!audioDevices.isEmpty())
	for(QMap<QString, QAudioDeviceInfo>::iterator device = audioDevices.begin(); device != audioDevices.end(); device++)
		ui->audioDevices->addItem(device->deviceName());
Wenn ich dann jedoch meinem QAudioOutput-Objekt das entsprechende Gerät (anhand des Index der QComboBox) im
Konstruktor übergeben habe, erfolgt die Soundausgabe über ein anderes vorhandenes Soundeingabegerät!

Liegt das am QAudioDeviceInfo-Objekt? Wie kann man das fixen?


Bedanke mich für sinnvolle Hilfe schon mal im Vorraus! :D

Re: QAudioDeviceInfo Angaben nicht korrekt

Verfasst: 5. September 2013 00:05
von veeman
Anhand des Indexes? Wie ist der bei dir Definiert?

Ansonsten kannst du dir die QMap sparren und der QComboBox direkt die QAudioDeviceInfo-Objekte als Benutzerdaten mitgeben,
welche du dann einfach auslesen kannst und sicher sein kannst dass das dazugehörige Objekt gewählt wurde.

Re: QAudioDeviceInfo Angaben nicht korrekt

Verfasst: 5. September 2013 02:58
von MADsCIENTIST
Wie genau würde denn die Alternative mit QVariant, also ohne QMap, aussehen?

Re: QAudioDeviceInfo Angaben nicht korrekt

Verfasst: 5. September 2013 15:38
von veeman

Code: Alles auswählen

	foreach(const QAudioDeviceInfo &deviceInfo, QAudioDeviceInfo::availableDevices(QAudio::AudioOutput))
		ui.comboBox->addItem(deviceInfo.deviceName(), QVariant::fromValue<QAudioDeviceInfo>(deviceInfo));

...
void on_comboBox_currentIndexChanged(int index)
{
	QVariant var = ui.comboBox->itemData(index);

	if (var.canConvert<QAudioDeviceInfo>())
	{
		QAudioDeviceInfo info = var.value<QAudioDeviceInfo>();
	}
}

Re: QAudioDeviceInfo Angaben nicht korrekt

Verfasst: 5. September 2013 17:36
von MADsCIENTIST
Sehr schön, damit spar ich mir jetzt schon mal die ständigen Abfragen zwischen
QMap und QComboBox.

Leider stimmen die Angaben zu meinen Audiogeräten trotzdem nicht.
Ich wähle beispielsweise "Microphone (Sound Blaster ZxR)" aus, jedoch
erfolgt die Musikausgabe an meine Boxen ("What U Hear")!


Also liegt das Problem so wie es aussieht an der QAudioDeviceInfo-Klasse!?

Re: QAudioDeviceInfo Angaben nicht korrekt

Verfasst: 5. September 2013 20:08
von veeman
Hmm kann dazu jetzt keine Aussage machen, hatte damals nur die Aufnahme getestet gehabt und das ging ohne Probleme.

Kannst du fest stellen ob die einfach nur vertauscht sind oder ob immer nur das eine Ausgewählt wird?