免费注册 查看新帖 |

Chinaunix

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

qt的按键代码 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-11-29 22:04 |只看该作者 |倒序浏览
qt的按键代码
hello.h---------------------------------
#include
#include
#include
#include
#include
#include
#include
#include
#include
class myMainWindow : public QWidget
{
    Q_OBJECT
    public:
        myMainWindow();
        ~myMainWindow();
    public slots:
        void getKey();
    private:
        void paintEvent(QPaintEvent *);
        QPainter *painter;
        int fd;
        QLabel *label;
        QTimer *readPress;
        bool keyStat[6];
};
hello.cpp---------------------------
#include "hello.h"
#include
#include
#include
#include
#include
#include
#include
myMainWindow::myMainWindow()
{
    setBackgroundColor(green);
    setMinimumSize(200,150);
    setMaximumSize(200,150);
    for(int i=0;isetGeometry(20,20,200,40);
    label->setBackgroundColor(green);
    label->setFont(QFont("Times",15,QFont::Black));
    label->setText("the six rectangle show\n"
                    "key pressed or not");
    label->setAlignment(AlignLeft);
    readPress = new QTimer(this); //使用q版定时器,问题就解决了。
    connect(readPress,SIGNAL(timeout()),this,SLOT(getKey()));
    readPress->start(10); //开始
    fd = open("/dev/buttons", O_NONBLOCK); //只能在这里打开一次,不然中断会丢失,这是驱动程序的结果
    if (fd begin(this);
    painter->setBrush(QBrush(blue,0)); //设置在那个画矩形的前面,之后画出的矩形都是用这个颜色填充
    for(i=0;isetBrush(QBrush(blue,SolidPattern));
        if(idrawRoundRect(20+i*WIDTH,60,WIDTH,LEN,40,40);
        }
        else {
            painter->drawRoundRect(20+(i-3)*WIDTH,60+LEN,WIDTH,LEN,40,40);
        }
    painter->setBrush(QBrush(blue,0)); //默认的是这个透明的画刷
    }
    painter->end();
}
void myMainWindow::getKey()
{
    readPress->stop();
    int ret;
    int key_value[6]={0,};
    ret = read(fd, key_value, sizeof key_value);
    if (ret != sizeof key_value){
        puts("no press\n");
        goto out;
    }
    for(int i=0;istart(10);
}
int main(int argc,char **argv)
{
    QApplication a(argc,argv);
    myMainWindow w;
    a.setMainWidget(&w);
    w.show();
    a.exec();
}



               
               
               

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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP