- 论坛徽章:
- 0
|
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 |
|