免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1058 | 回复: 0
打印 上一主题 下一主题

A QT4 program to make a beep [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-11-16 20:57 |只看该作者 |倒序浏览
A QT4 program that can make a beep when you click the button.
/***************************************************************************
**   Copyright (C) 2007 by Meng Renzhou
**   ship_@163.com
**
**   This program is free software; you can redistribute it and/or modify
**   it under the terms of the GNU General Public License as published by
**   the Free Software Foundation; either version 2 of the License, or
**   (at your option) any later version.
**
**   This program is distributed in the hope that it will be useful,
**   but WITHOUT ANY WARRANTY; without even the implied warranty of
**   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
**   GNU General Public License for more details.
**
**   You should have received a copy of the GNU General Public License
**   along with this program; if not, write to the
**   Free Software Foundation, Inc.,
**   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
****************************************************************************/
#ifndef BELL_H
#define BELL_H
#include QObject>
class Bell : public QObject
{
    Q_OBJECT;
   
public:
    Bell(QObject * parent = 0);
    Bell(char * fdev, QObject * parent = 0);
    ~Bell();
   
    int Open(const char *fdev);
    void Close();
   
public slots:
    void MakeBell();
    void StartTone(int arg);
    void StopTone();
   
protected:
    int fd;
   
private:
    bool toning;
};
#endif
/***************************************************************************
**   Copyright (C) 2007 by Meng Renzhou
**   ship_@163.com
**
**   This program is free software; you can redistribute it and/or modify
**   it under the terms of the GNU General Public License as published by
**   the Free Software Foundation; either version 2 of the License, or
**   (at your option) any later version.
**
**   This program is distributed in the hope that it will be useful,
**   but WITHOUT ANY WARRANTY; without even the implied warranty of
**   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
**   GNU General Public License for more details.
**
**   You should have received a copy of the GNU General Public License
**   along with this program; if not, write to the
**   Free Software Foundation, Inc.,
**   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
****************************************************************************/
#include fcntl.h>
#include stdio.h>
#include stdlib.h>
#include sys/ioctl.h>
#include sys/types.h>
#include linux/kd.h>
#include "bell.h"
Bell::Bell(QObject * parent) : QObject(parent)
{
    fd = -1;
    toning = 0;
}
Bell::Bell(char * fdev,QObject * parent) : QObject(parent)
{
    fd = -1;
    toning = 0;
    Open(fdev);
}
int Bell::Open(const char *fdev)
{
    fd = open(fdev, O_WRONLY);
    if (fd == -1) return -1;
    return 0;
}
void Bell::Close()
{
    close(fd);
}
void Bell::MakeBell()
{
    ioctl(fd, KDMKTONE, (2000 | (300  16)));
}
void Bell::StartTone( int arg)
{
    if (!toning)
        ioctl(fd, KIOCSOUND, arg);
    toning = 1;
}
void Bell::StopTone(void)
{
    if (toning)
        ioctl(fd, KIOCSOUND, 0);
    toning = 0;
}
Bell::~Bell()
{
    Close();
}
/***************************************************************************
**   Copyright (C) 2007 by Meng Renzhou
**   ship_@163.com
**
**   This program is free software; you can redistribute it and/or modify
**   it under the terms of the GNU General Public License as published by
**   the Free Software Foundation; either version 2 of the License, or
**   (at your option) any later version.
**
**   This program is distributed in the hope that it will be useful,
**   but WITHOUT ANY WARRANTY; without even the implied warranty of
**   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
**   GNU General Public License for more details.
**
**   You should have received a copy of the GNU General Public License
**   along with this program; if not, write to the
**   Free Software Foundation, Inc.,
**   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
****************************************************************************/
#include QApplication>
#include QFont>
#include QPushButton>
#include "bell.h"
            
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QPushButton mktone("Make Tone");
    Bell bell("/dev/console", &mktone);
   
    mktone.resize(150, 50);
    mktone.setFont(QFont("Times", 18, QFont::Bold));
    QObject::connect(&mktone, SIGNAL(clicked()), &bell, SLOT(MakeBell()));
    mktone.show();
    return app.exec();
}


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/3272/showart_424273.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP