免费注册 查看新帖 |

Chinaunix

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

基于mini2440的LED控制Qt界面 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-01-28 16:05 |只看该作者 |倒序浏览

一,前言:为了初步掌握Qt编程,最快的方法是自己写一个Qt应用程序。
    耗了两天时间,终于是完成了基于mini2440的LED控制Qt界面,除了开始时弄Qt库的编译,环境的建立有些烦人外,基础性的Qt编程并不算难。 (版本:Qtopia2.2.0)
下面就两种实现方法简单理一下这个流程:(代码见后面附件)

二, 第一种方法借助于Qt有designer完成GUI,比较简单。

2.1,在终端输入designer,就进入GUI设计界面了。

2.2,生成led_base.ui后,手动编辑led_base.ui创建几个connection和slot。

2.3,设计一个新类LedForm,继承自ui产生的类LedBaseForm,这样我们就可以用ui里创建的控件了。在这个类里新加了几个虚函数,如下:
virtual void LedAction1();
    virtual void LedAction2();
    virtual void LedAction3();
    virtual void LedAction4();
    virtual void LedAction5();
    virtual void LedAction6();
    virtual void LedAction7();
    virtual void LedAction8();
    virtual void LedAction9();
    virtual void LedAction10();
这几个虚函数与ui里面的slot是同名的,根据C++的多态性,当pushbutton控件产生clicked()信号时,会分别由这几个虚函数来响应。

2.4,类的实现就比较简单了,基本上就是ioctl()来控制LED的灭与亮。

2.5,main函数的实现。先是打开LED驱动节点,如果成功,就用上面新类来实例化一个对象。

三,第二种方法不使用ui。自己手动完成GUI。

3.1,同样根据需要设计一个新类LedButton,由QPushButton派生。并加入两个私有成员LedCMD,LedArg,将会在ioctl()时作为参数直接传给驱动程序,这样就不用象上面一样设计多个slot了。
值得注意的是,Q_OBJECT这个宏经常被忘掉,导至编译出问题。
这个类如下:
class LedButton : public QPushButton
{
    Q_OBJECT
public:
    LedButton(const QString&,QWidget *parent,int CMD=0, int Arg=0);
    virtual ~LedButton();

private:
    int LedCMD,LedArg; //private members used as IOCTRL

public slots:
    void LedAction();
};

3.2,LedButton的实现,在构造函数中赋初值,并连接信号和槽。LedButton::LedAction()中,当LedArg==4时,控制全亮或全灭。

3.3,main函数,当使用新类LedButton构造对象时,传递特定的初值LedCMD和LedArg,其它的没什么好说的。

------------------------------------------
本文乃原创!
转载请注明出处:http://sparklecliz.cublog.cn/
------------------------------------------
         

文件:
LedQtInterface.rar
大小:
31KB
下载:
下载

文件:
LedControlQt.rar
大小:
40KB
下载:
下载


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/107046/showart_2163283.html

论坛徽章:
0
2 [报告]
发表于 2010-07-28 22:41 |只看该作者
不错呀
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP