#include <qpe/qpeapplication.h> // 使用するクラスを指定する #include "mainwindow.h" // 使用するプログラムを指定する int main(int argc, char *argv[]) { QPEApplication a(argc,argv); Mainwindow *mw = new Mainwindow(); a.showMainWidget(mw); return a.exec(); }
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <qmainwindow.h> // 使用するクラスを指定する #include <qapplication.h> #include <qpushbutton.h> #include <qtextcodec.h> #include <qfont.h> #include <qsound.h> #include <qlabel.h> class Mainwindow : public QWidget{ Q_OBJECT public: Mainwindow(QWidget *parent = 0, const char *name = 0); private: QTextCodec *codec; // テキストコーデック QPushButton *play1, *play2, *play3, *stop; // ボタン「play1」「play2」「play3」「stop」をまとめて用意する QLabel *label; // ラベル private: // スロットではない void play(int play_no); // 呼び出された音声を再生する機能を作成する void soundsupport(); // サウンドサポートが利用できるかどうかをラベル「label」に表示する機能を作成する private slots: // スロット void slot_pre_play(); // 音声を再生するためのスロットを作成する void slot_start(); // サウンドを再生するためのスロットを作成する }; #endif //MAINWINDOW_H
#include "mainwindow.h" // mainwindow.cpp のヘッダーファイル mainwindow.h を読み込み Mainwindow::Mainwindow(QWidget *parent, const char *name) : QWidget(parent, name) { // テキストコーデック「codec」を作成 // 以降、codec->toUnicode("ここに書いたことは日本語で表示できる") codec = QTextCodec::codecForName("ShiftJIS"); // ウィンドウのタイトルを設定 setCaption(codec->toUnicode("サンプル4「音声を再生する」")); // 使用するフォントを設定 QFont f("lcfont",18); setFont(f); // ボタン「play1」を作成 play1 = new QPushButton(codec->toUnicode("音声1"), this); // ボタン「play1」の配置位置を指定 play1 -> setGeometry(20, 80, 70, 25); // ボタン「play2」を作成 play2 = new QPushButton(codec->toUnicode("音声2"), this); // ボタン「play2」の配置位置を指定 play2 -> setGeometry(100, 80, 70, 25); // ボタン「play3」を作成 play3 = new QPushButton(codec->toUnicode("音声3"), this); // ボタン「play3」の配置位置を指定 play3 -> setGeometry(180, 80, 70, 25); // ボタン「stop」を作成 stop = new QPushButton(codec->toUnicode("再生"), this); // ボタン「stop」の配置位置を指定 stop -> setGeometry(20, 170, 70, 25); // ラベル「label」を作成 label = new QLabel(codec->toUnicode("ステータス"), this); // ラベル「label」の配置位置を指定 label -> setGeometry(20, 130, 400, 25); soundsupport(); // soundsupport() を実行する。 QObject::connect( play1, SIGNAL(pressed()), this, SLOT(slot_pre_play()) ); // 「play1」が「clicked()」押されたら「this(=Mainwindow)」に対して「slot_pre_play()」を実行させる QObject::connect( play2, SIGNAL(pressed()), this, SLOT(slot_pre_play()) ); QObject::connect( play3, SIGNAL(pressed()), this, SLOT(slot_pre_play()) ); QObject::connect( stop, SIGNAL(clicked()), this, SLOT(slot_start()) ); } // 音声を再生するためのスロット「slot_pre_play()」を作成 void Mainwindow::slot_pre_play() { if( play1->isDown() ) // <条件>もしボタン「play1」が「isDown(=押される)」されたら { play(1); // playに「1」をわたして実行 } else if( play2->isDown() ){ // <条件>そうでなく、もしボタン「play2」が「isDown(=押される)」されたら play(2); // playに「2」をわたして実行 } else if( play3->isDown() ){ // <条件>そうでなく、もしボタン「play3」が「isDown(=押される)」されたら play(3); // playに「3」をわたして実行 } } // 呼び出された音声を再生する機能を作成 void Mainwindow::play(int play_no=0) { if( play_no == 1 ) // <条件>もしplay_noが「1」なら { QSound::play("/mnt/card/1.wav"); // 「/mnt/card/1.wav」を再生する } else if( play_no == 2 ){ // <条件>そうでなく、もしplay_noが「2」なら QSound::play("/mnt/card/2.wav"); // 「/mnt/card/2.wav」を再生する } else if( play_no == 3 ){ // <条件>そうでなく、もしplay_noが「3」なら QSound::play("/mnt/card/3.wav"); // 「/mnt/card/3.wav」を再生する } } // サウンドサポートが利用できるかどうかをラベル「label」に表示する機能を作成 void Mainwindow::soundsupport() { if(QSound::available() == 1) // <条件>もしサウンドの「available()(=利用可能)」かどうかが「TRUE(=1)」なら { label -> setText(codec->toUnicode("サウンドサポートは利用できます。")); // ラベル「label」の表示を「サウンドサポートは利用できます。」にする。 } else { // <条件>そうでなければ label -> setText(codec->toUnicode("サウンドサポートは利用できません。")); // ラベル「label」の表示を「サウンドサポートは利用できません。」にする。 } } // サウンドを再生するためのスロット「slot_start()」を作成 void Mainwindow::slot_start() { QSound bucket3("/mnt/card/1.wav"); bucket3.play(); }
. ~/SLZaurus/bin/dev-arm-qpe.sh cd ~/SLZaurus/sample0004 progen -o sample0004.pro tmake -o Makefile sample0004.pro make |