|
5Qter豆
本帖最后由 liangzhenjie 于 2017-1-14 11:43 编辑
我用了qt例子中的audio这个例子看qchart,我打算用同样的数据同时绘制两个图表出来,但是我改完以后运行就卡死,半天没反应,代码如下
m_chart = new QChart;
QChartView *chartView = new QChartView(m_chart);
chartView->setMinimumSize(800, 600);
m_series = new QLineSeries;
m_chart->addSeries(m_series);
QValueAxis *axisX = new QValueAxis;
axisX->setRange(0, 2000);
axisX->setLabelFormat("%g");
axisX->setTitleText("Samples");
QValueAxis *axisY = new QValueAxis;
axisY->setRange(-1, 1);
axisY->setTitleText("Audio level");
m_chart->setAxisX(axisX, m_series);
m_chart->setAxisY(axisY, m_series);
m_chart->legend()->hide();
m_chart->setTitle("Data from the microphone");
QChart * m_chart1 = new QChart;
QChartView *chartView1 = new QChartView(m_chart1);
chartView1->setMinimumSize(800, 600);
m_series1 = new QLineSeries;
m_chart1->addSeries(m_series1); QValueAxis *axisX1 = new QValueAxis;
axisX1->setRange(0, 2000);
axisX1->setLabelFormat("%g");
axisX1->setTitleText("Samples2");
QValueAxis *axisY1 = new QValueAxis;
axisY1->setRange(-1, 1);
axisY1->setTitleText("Audio level2");
m_chart1->setAxisX(axisX1, m_series1);
m_chart1->setAxisY(axisY1, m_series1);
m_chart1->legend()->hide();
m_chart1->setTitle("Data from the microphone2");
QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addWidget(chartView);
mainLayout->addWidget(chartView1);
m_pLabel = new QLabel();
mainLayout->addWidget(m_pLabel);
setLayout(mainLayout);
QAudioFormat formatAudio;
formatAudio.setSampleRate(18000);
formatAudio.setChannelCount(1);
formatAudio.setSampleSize(8);
formatAudio.setCodec("audio/pcm"); formatAudio.setByteOrder(QAudioFormat::LittleEndian);
formatAudio.setSampleType(QAudioFormat::UnSignedInt);
QAudioDeviceInfo inputDevices = QAudioDeviceInfo::defaultInputDevice();
m_audioInput = new QAudioInput(inputDevices,formatAudio, this);
m_device = new XYSeriesIODevice(m_series, this);
m_device->open(QIODevice::WriteOnly);
m_device->AddSeries(m_series1); m_audioInput->start(m_device);
变量后面有1的都是我自己新添加的,iodevice那里我也改了一下
QVector<QPointF> points2 = points;
m_series->replace(points);
m_series1->replace(points2);
为什么就会卡死呢,如果把audio的SampleRate降得很低,就能看到慢慢动,现在这么高就完全卡死一样,这跟绘制的机制有什么联系吗,我现在需要类似的功能实现,大神闷帮忙解决下啊!!困扰好久了
|
最佳答案
查看完整内容
你看那个QML中chart的例子,可以绘制多个的
|