Qt开发杂记(四)

QSound继承自QObject类,用于访问平台的音频工具。在GUI应用程序中Qt提供了一般绝大数的音频操作:为用户异步地播放声音文件。用一个单一的调用就可以完成这样的一件事:
 QSound::play("mysounds/bells.wav");
当建立一个声音文件对象,以后再进行播放的时候,提供了第二个API:
 QSound bells("mysounds/bells.wav");
 bells.play();
第二种模式相对第一种模式,播放时可能会占用较多的内存,但播放的会更流畅直接些。
在MS Windows,内在的媒体系统被使用,因此,支持WAVE格式。
在X11,如果可用的话,网络音频系统(Network Audio System)会被使用,否则所有的操作都是无声的。网络音频系统(Network Audio System,NAS)支持WAVE和AU文件格式。
在Qt/Embedded,使用一个嵌入的(内置的)混频语音服务器来直接地访问/dev/dsp。仅仅支持WAVE一种格式,但是当建立Qt的时候,这个支持可以进行配置。默认是11.025千赫,8位mono脉冲编码调制(11.025 kHz 8-bit mono PCM)。
声音可以用QSound::available()这个函数来测试是否有效。
公有成员函数:
 QSound(const QString &filename, QObject *parent=0, const char *name=0)
 ~QSound()
公有插槽:
 void play()
静态公有成员函数:
 bool available()
 void play(const QString &filename)

//===================================================================

int QObject::startTimer(int interval)
开始一个计时器并且返回一个计时器标识,当然如果不能够开始计时器的话,则返回0。
一个计时器事件将每隔interval毫秒执行一次直到调用了killTimer()或killTimers()。如果interval是0的话,那么当计时器执行的时候,那么就不可能有其它的窗口事件来执行了。
当计时器执行的时候用QTimerEvent事件作为参数调用虚函数timerEvent()。重新实现这个函数可以得到计时器事件。
如果多计时器运行,QTimerEvent::timerId()能够用于查找出是当前是哪个计时器被激活的。
例如:
    class MyObject : public QObject
    {
    public:
        MyObject( QObject *parent=0, const char *name=0 );
    protected:
        void  timerEvent( QTimerEvent * );
    };

    MyObject::MyObject( QObject *parent, const char *name )
        : QObject( parent, name )
    {
        startTimer( 50 );                       // 50 millisecond timer
        startTimer( 1000 );                     // 1 second timer
        startTimer( 60000 );                    // 1 minute timer
    }

    void MyObject::timerEvent( QTimerEvent *e )
    {
        qDebug( "timer event, id=%d", e->timerId() );
    }
计时器间隔时间没有上限(可以超过一年),精确性取决于作在的操作系统。Windows95拥有55毫秒(每秒18.2次)的精确度;其它的我们测试过的操作系统(UNICX X11, Windows NT and OS/2)能够处理1毫秒的间隔时间。
QTimer类提供了计时器的信号与槽这样的高级应用程序接口来取代事件。

 //================================================================================


QWMatrix类用于一个坐标系统的2D转换。
一个绘图设备(paint device)标准坐标系统的原点位于左上方位置。X值往右递增,Y值往下递增。
这个坐标系统对于用于着色图形的设备QPainter来说是默认的。一个用户定义的坐标系统可以为一个painter来设置QWMatrix。
例如:
    MyWidget::paintEvent( QPaintEvent * )
    {
      QPainter p;                       // our painter
      QWMatrix m;                       // our transformation matrix
      m.rotate( 22.5 );                 // rotated coordinate system
      p.begin( this );                  // start painting
      p.setWorldMatrix( m );            // use rotated coordina
te system
      p.drawText( 30,20, "detator" );   // draw rotated text at 30,20
      p.end();                          // painting done
    }
一个矩阵用于指定图形的转换(translate)、比例(scale)、剪切(shear)和旋转(rotate)的设置,而真正的转换是被QPianter里的绘图函数和QPixmap::xForm()执行的。

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页