Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1298622
  • 博文数量: 548
  • 博客积分: 7597
  • 博客等级: 少将
  • 技术积分: 4224
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-15 13:21
个人简介

嵌入式软件工程师&&太极拳

文章分类

全部博文(548)

文章存档

2014年(10)

2013年(76)

2012年(175)

2011年(287)

分类:

2011-03-04 14:14:48

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()执行的。
阅读(615) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~