Qtで再生/一時停止ボタンを作成する最善の方法は何ですか? 1つのアクションを作成してクリックするとそのアイコンを変更するか、2つのアクションを作成してクリックしたときに何かを隠すべきですか?ショートカットキーを使用して両方の操作を有効にするにはどうすればよいですか? (再生中は一時停止、一時停止中は再生)。Qt再生/一時停止の動作?
5
A
答えて
6
。同じボタンを使用しますが、クリックを処理するときはアイコンを変更し、現在のステータス(再生中は一時停止、一時停止中は再生)に基づいて処理ロジック(再生または一時停止)を選択します。
コードを明確にするには、再生と停止の2つの方法を実装し、ボタンのスロットから呼び出すことで状態を確認します。
2
私はこのようなものは、最も簡単な/最も適切だと思う:
playAct = new QAction(QIcon(":/icons/elementary/media-playback-start.png"), tr("&Run"), controlActGroup);
playAct->setShortcut(Qt::Key_Space);
playAct->setCheckable(true);
playAct->setStatusTip(tr("Run physics"));
connect(playAct, SIGNAL(triggered()), editorView, SLOT(runPhysics()));
pauseAct = new QAction(QIcon(":/icons/elementary/media-playback-pause.png"), tr("&Pause"), controlActGroup);
pauseAct->setShortcut(Qt::Key_Space);
pauseAct->setCheckable(true);
pauseAct->setStatusTip(tr("Pause physics"));
connect(pauseAct, SIGNAL(triggered()), editorView, SLOT(pausePhysics()));
connect(playAct, SIGNAL(toggled(bool)), pauseAct, SLOT(setVisible(bool)));
connect(pauseAct, SIGNAL(toggled(bool)), playAct, SLOT(setVisible(bool)));
pauseAct->setChecked(true);
pauseAct->setVisible(false);
私は好きではない唯一のものは、アクションが他のボタンの可視性の状態を制御していることです。 setInvisible
機能がないので、クリックすると自分自身を隠すことができるように、私はそれをフックできませんでした。
これは、隠されたボタンが(少なくともUbuntuでは)どこかに視覚的なギャップを作り出すようです。
1
ツールバーとメインウィンドウのメニューに再生操作と一時停止操作の両方を追加し、一時停止操作を非表示にすることができます。このアクションを切り替える必要がある場合は、アクションの表示を変更するだけで、メニューとツールバーに同時に反映されます。便利ですが、コードはコンパクトです。
1
再生/一時停止ボタンが何をしているのかわかりませんが、オーディオをストリームするためにPhononでアプリを構築しています。メディアオブジェクトの現在の状態を取得する良い方法が見つかりませんでした。
最も近いのは、スロットを作成してstateChanged()
信号に接続して、MediaObject
が発することです。私が接続し、再接続のファンではないんだけど、私は、これはそれを行うためのQtの方法だと思い
MyMediaPlayer::MyMediaPlayer(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MyMediaPlayer)
{
...
connect(mediaObj, SIGNAL(stateChanged(Phonon::State,Phonon::State)),
this, SLOT(handleMediaState(Phonon::State,Phonon::State)));
}
...
void MyMediaPlayer::handleMediaState(Phonon::State state, Phonon::State)
{
switch (state)
{
case Phonon::PlayingState:
case Phonon::LoadingState:
case Phonon::BufferingState:
//If we're playing, the button should pause
ui->playPauseButton->setIcon(QIcon(":/assets/stock_media-pause.svg"));
connect(ui->playPauseButton, SIGNAL(clicked()),
mediaObj, SLOT(pause()));
break;
case Phonon::PausedState:
case Phonon::StoppedState:
//if we're paused, the button should play
ui->playPauseButton->setIcon(QIcon(":/assets/stock_media-play.svg"));
connect(ui->playPauseButton, SIGNAL(clicked()),
mediaObj, SLOT(play()));
case Phonon::ErrorState:
//additionally, if there's an error, do error handling.
break;
default:
break;
}
}
:私はこれをやってしまいました。
関連する問題
- 1. JavaScriptサウンド再生/停止/一時停止
- 2. エンキュー、再生、停止、一時停止、再開を伴うAudioTrackクラス
- 3. vb 2010の一時停止/再生ボタン
- 4. ビデオビデオタグの再生/一時停止アイコン
- 5. Javascriptオーディオオブジェクトの再生/一時停止
- 6. コーダスライダの停止/一時停止/再生ボタンの実装
- 7. フリーズゲームを一時停止/再生する
- 8. jQueryタブアニメーションコントローラで一時停止と再生
- 9. Java - 再生/一時停止VLC
- 10. Googleタグマネージャでの動画タグのクリックイベント(再生、停止、一時停止など)
- 11. YouTubeは一時停止、再生&停止しません。
- 12. Apple TVの再生/一時停止ボタンを再生/一時停止する方法AVAudioPlayer
- 13. HTML5動画の再生と一時停止のトリガー
- 14. オーディオの再生/一時停止ボタンの作成方法は?
- 15. 自動jqueryスライダーの再生/一時停止ボタン
- 16. 再生/ポップアップでYouTubeの動画を一時停止
- 17. 再生/一時停止の切り替えが動作しない
- 18. Unity3d - 再生と一時停止の間の遷移時のオーディオラフサウンド
- 19. 再生、一時停止、再開、非表示の角で
- 20. スレッドプールでの作業、すべてのスレッドの一時停止、再生、再開、および停止方法
- 21. 奇妙な一時停止動作Fortran
- 22. Flex VideoDisplay、ストリーミングFLV、一時停止/再生による再バッファー
- 23. Swift 2.2単一再生/一時停止UIButton
- 24. jQueryサイクルと埋め込みYouTubeビデオ - 動画再生時に一時停止
- 25. シーク、一時停止、または再生時にバッファリングビデオを作成する
- 26. MediaRecorderの一時停止/再開機能
- 27. カウントダウンタイマーの一時停止と再開
- 28. Libgdxでの一時停止と再開
- 29. WebRTCの一時停止と再開ストリーム
- 30. スレッドの一時停止/再開方法
実際にアイコン、テキスト、ステータスヒント、スロットを変更し、play()やpause()スロットを直接呼び出すのではなく、同じクラスの関数を呼び出す必要がありますボタンを更新し、アクションを伝播します。切り替えることができる2つのアクションを持つ方が理にかなっているので、すべてのプロパティの変更を管理する必要はありません。 – mpen
私には、単一のスロット方法で条件付き呼び出しをするのは、スロットを切断して再接続するよりも簡単です...しかし、多分それは先制の問題です:) –
2つの別々の行動があった、いいえ?私はあなたが両方の行動のために1つのスロットを意味していたことを理解していませんでした。これについてもっと考えなければならない。 – mpen