0

QAudioRecorder使わないと困るQMainWindow。ここでこのスクリプトを実行した後、ほとんどの一般的なメディア プレーヤーでは再生できない 0 バイトのファイルが作成されます。

int main(int argc, char *argv[]){
    QAudioRecorder q;
    q.setAudioInput(q.audioInputs()[0]);
    q.setOutputLocation(QUrl::fromLocalFile("simon.amr"));
    q.record();
    Sleep(10000);
}

これは機能しますが:

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
};

QAudioRecorder q;

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent)
{
    std::cout << "DEFAULT: " << q.defaultAudioInput().toStdString() << std::endl;
    std::cout << "List: " << q.audioInputs().join(',').toStdString() << std::endl;
    std::cout << "STATUS 0: " << q.status() << std::endl;
    std::cout << "Location: " << QUrl::fromLocalFile("simon.amr").path().toStdString() << std::endl;
    q.setAudioInput(q.audioInputs()[0]);
    q.setOutputLocation(QUrl::fromLocalFile("simon.amr"));
    q.record();

    std::cout << "STATUS 1: " << q.status() << std::endl;
}

MainWindow::~MainWindow()
{
    std::cout << "STATUS 2: " << q.status() << std::endl;
}

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    MainWindow recorder;
    recorder.show();

    return app.exec();
}

QAudioRecorderなしでどのように使用できQMainWindowますか? 私は何か間違ったことをしていますか?

4

2 に答える 2

0
int main(int argc, char *argv[])
{
    QCoreApplication app(argc, argv);

    QAudioRecorder q; 
    q.setAudioInput(q.audioInputs()[0]);    
    q.setOutputLocation(QUrl::fromLocalFile("simon.amr"));    
    q.record();

    return app.exec();
}

qt イベント ループが必要です。スリープは、QCoreApplication が提供するイベントおよびシグナル処理を提供しません。

これは Qt のコア メカニクスであるため、よく読んでください。

あなたのプロジェクトで頑張ってください!

于 2013-11-27T22:23:10.573 に答える