rk3568_ubuntu_r60_v1.3.2/app/qsetting/qtaudio.cpp
2023-11-03 06:12:44 +00:00

83 lines
2.8 KiB
C++
Executable File

#include "qtaudio.h"
#include <QApplication>
#include <QAudioDeviceInfo>
#include <QAudioOutput>
#include <QDebug>
#include <QDesktopWidget>
qtAudio::qtAudio(QWidget *parent)
{
const QRect availableGeometry = QApplication::desktop()->availableGeometry(parent);
resize(availableGeometry.width(), availableGeometry.height());
QFont f;
f.setPixelSize(availableGeometry.height()/20);
listWidget = new QListWidget();
QList<QAudioDeviceInfo> alist = QAudioDeviceInfo::availableDevices(QAudio::AudioOutput);
QAudioDeviceInfo defaultinfo(QAudioDeviceInfo::defaultOutputDevice());
qDebug() << "default device name: " << defaultinfo.deviceName();
for(auto info : alist){
QListWidgetItem *audioItem = new QListWidgetItem();
audioItem->setText(info.deviceName());
audioItem->setFont(f);
audioItem->setFlags(audioItem->flags() | Qt::ItemIsUserCheckable);
if(defaultinfo == info){
audioItem->setCheckState(Qt::Checked);
} else {
audioItem->setCheckState(Qt::Unchecked);
}
qDebug() << info.deviceName();
listWidget->addItem(audioItem);
}
listWidget->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
listWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
listWidget->setMinimumHeight(listWidget->sizeHintForRow(0) * listWidget->count());
listWidget->setMaximumHeight(listWidget->sizeHintForRow(0) * listWidget->count());
slider = new QSlider(Qt::Horizontal);
slider->setMinimum(0);
slider->setMaximum(10);
QAudioOutput out(defaultinfo);
qreal v = out.volume();
slider->setValue(qRound(v*10));
connect(slider, SIGNAL(valueChanged(int)), this, SLOT(changeVolume(int)));
vLayout = new QVBoxLayout();
vLayout->addWidget(listWidget);
vLayout->addWidget(slider);
vLayout->setAlignment(Qt::AlignTop);
setLayout(vLayout);
setStyleSheet("background-color:rgb(204,228,247)");
setObjectName("Audio");
connect(listWidget, SIGNAL(itemClicked(QListWidgetItem *)), this, SLOT(on_itemClicked(QListWidgetItem *)));
}
qtAudio::~qtAudio()
{
listWidget->clear();
delete listWidget;
delete slider;
delete vLayout;
}
void qtAudio::on_itemClicked(QListWidgetItem *item)
{
qDebug() << item->text();
}
void qtAudio::changeVolume(int value)
{
QAudioDeviceInfo info(QAudioDeviceInfo::defaultOutputDevice());
QAudioOutput out(info);
qreal linearVolume = QAudio::convertVolume(value / qreal(100.0),
QAudio::LinearVolumeScale,
QAudio::LogarithmicVolumeScale);
qDebug() << value;
qreal v = qreal(value) / qreal(10.0);
qDebug() << v;
out.setVolume(v);
QApplication::beep();
}