簡體   English   中英

以第二種形式使用QMediaPlayer

[英]Using QMediaPlayer in second form

我是Qt的新手。 我有QMediaPlayer的問題:我的程序有2個表單(主表單和通知)。 因此它有條件,如果是真的,程序必須顯示第二種形式並在加載形式上播放音樂。

main.cpp中

#include "mainwindow.h"
#include <QApplication>
#include "dialog.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    Dialog d;
    d.musicPlay();
    d.show();


    return a.exec();
}

dialog.cpp

#include "dialog.h"
#include "ui_dialog.h"
#include <QMediaPlayer>
#include <QUrl>
#include <QDebug>

Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    uix(new Ui::Dialog)
{
    uix->setupUi(this);
}

void Dialog::musicPlay() const
{
    QMediaPlayer pl;
    pl.setMedia(QUrl::fromLocalFile("/home/jack/01.mp3"));
    pl.setVolume(100);
    pl.play();
    qDebug()<<pl.errorString();
}

Dialog::~Dialog()
{
    delete uix;
}

它不起作用,但如果musicPlay()如下:

uix->label->setText("qwerty");

它會奏效。 你能幫忙解決這個問題嗎? 也許我必須使用插槽和信號?

這不起作用,因為您已將pl變量聲明為保存在堆棧中的局部變量。 堆棧變量將被破壞opon完成功能。

因此,您應該使用new關鍵字聲明和定義pl

QMediaPlayer* pl = new QMediaPlayer;
pl->setMedia(QUrl::fromLocalFile("/home/jack/01.mp3"));
pl->setVolume(100);
pl->play();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM