2014-03-03 74 views
0

工作,這不起作用:QSound的不if語句

QString directory = ""; 

int main(int argc, char *argv[]) 
{ 
    QString boo = getDir(); 

    if(!boo.isEmpty()) { 

     directory = boo; 

     QSound s1(directory); 
     QApplication a(argc, argv); 
     MainWindow w; 
     s1.play(); 
     // MainWindow shows fine but QSound doesnt work at all 
    } else { 
     //somethingelse 
    } 
} 

但這工作正常。

QString directory = ""; 

int main(int argc, char *argv[]) 
{ 
    QString boo = getDir(); 

    if(!boo.isEmpty()) { 

     directory = boo; 

     QApplication a(argc, argv); 
     MainWindow w; 


    } else { 
     //somethingelse 
    } 

    QSound s1(directory); 
    s1.play(); 
} 

問題是 - 我的第一個例子有什麼問題?我不知道說實話。

我嘗試了很多次,但仍然無法正常工作。我應該怎麼做才能解決它?

+1

在初始化QApplication和MainWindow後嘗試初始化QSound – Nick

+0

我很驚訝,或者沒有調用QApplication :: exec,因爲我預料主線程的事件循環將在這裏需要。 – TheDarkKnight

回答

1

問題很簡單,您的QSound實例超出範圍並在「then」塊的末尾被破壞,並且在您聽到任何聲音之前聲音停止播放。

將定義移出「then」塊之前。然後在「然後」塊中開始播放它。