嵌入式产品与Qt编程

甲:嵌入式产品设计考虑
    1. 输出设备,显示屏,打印机,IO端口等.
        IO 端口可以通过操作文件描述符来控制. 用一个bit的信息可以控制IO的高低电平,也可以读入
        打印机(串口打印机)可以通过操纵串行口来实现. 输出信息方式是文字.
        显示屏是最主要的信息输出方式, 其向用户的展示信息的方式可以通过ascii,
        文字,或者图形. QT有很多控件,方便了与用户进行信息沟通.

    2. 输入设备, 触摸屏,键盘
        嵌入式设备往往没有键盘,可以在屏幕上画出一个键盘,叫软键盘与用户进行交互。触摸屏用来点击
        屏幕上的点或者控件
        
    3. 输入输出设备: U盘, TF卡等

乙:linux 对嵌入式产品的支持
    linux 对所有的外部设备按照文件来处理,数据的输出与输入用read,write 来进行,简化了与外部设备的接口。    
    IO端口操作,打印机操作,U盘,TF卡等数据的输入与输出均得到了支持。
    关于触摸屏和显示屏,是更加灵活的两个设备, 信息处理方式有所不同,但得到了QT的支持, QT有许多控件来
    支持屏幕的显示和触摸屏点击

丙: QT 对图形化界面编程的支持。
     QT 提供了许多标准化控件,如果你需要该类图形和功能,一种是直接调用它的接口函数,还有一种是先new 一个
    对象,调用对象的方法来操纵对象.
    下面分析几个常用的函数和对象。
    1. 消息框.(客户化消息框)
    当你想通知用户某些信息时,你可能需要一个消息框, 是的,这只需要调用一个函数就可以了.QMessageBox::information()等    
    如果你对它的外观不满意,可以客户话这个消息框, 例如创建一个无框架,1个或2个button 的消息框
    如下是我实现的一个静态方法,并不需要this 指针
    int MyMessageBox::information(QWidget *notuse, QString title, QString content,QString s1, QString s2)
    {
        (void) notuse; //不需要父类指针
        (void) title; //不需要标题
        QMessageBox customMsgBox; //声明一个对话框对象

        customMsgBox.setWindowFlags(Qt::FramelessWindowHint); //设置为无windows 框架
        QPushButton *but1 = customMsgBox.addButton(s1,QMessageBox::ActionRole);
        QPushButton *but2 = NULL;
        if(s2!="") //根据函数参数,创建一个或2个button,button的文字由参数s1,s2确定
        {
            but2 = customMsgBox.addButton(s2,QMessageBox::ActionRole);
        }
        customMsgBox.setIcon(QMessageBox::Information); //设置消息框图标
        customMsgBox.setText(content);    //设置显示内容
        customMsgBox.exec();        //呈现给用户,等待点击返回.
        
        if(customMsgBox.clickedButton() == but1)  //根据点击按钮,返回不同的值
            return 0;
        if(customMsgBox.clickedButton() == but2)
            return 1;
        return -1;
    }
    通过上边简短的呈现,我们知道QT编程的几个特点: 对象有很多方法,可以供我们调用.
    鼠标点击已经隐含在控件中了,我们并没有直接处理鼠标点击。
    图形呈现只使用了对象的exec()方法,非常简洁。

    2. 键盘输入(软键盘与用户交互)
    用户与产品进行交互,往往需要使用键盘,而嵌入式设备一般不带键盘接口,此时,往往需要一个软键盘来代替键盘功能
    软键盘就是在屏幕上画出一些键盘按钮,供用户点击,从而获取用户到底点击了那些按钮.高级的软键盘甚至可以结合输入法
    输入中文字符.
    我们在屏幕上画上几个按钮和一个输入框,用以显示用户输入了什么,一个确定按钮一个取消按钮。我们必须要知道哪个按钮
    被点击了,点击这个按钮需要怎样的处理. 按钮被点击时都会发送clicked() 信号, 把这个信号与我们的槽函数相连接,当用户
    点击按钮时,就会触发执行我们的槽函数. 众多的按钮,怎样把它们分组管理或处理,达到简化编程的目的就需要一点编程的技巧
    把按键点击序列作为索引去搜索数据库,就可以显示出对应的汉字,把汉字显示到按钮上让用户选择,就是中文软键盘了。
    如此是用按钮的方式实现中文软件盘和用户交互.  其它还有简化的数字键盘,只是为了输入数字等,仅用到数字健和输入框.
    实例代码比较多,就不上了。

    3. 数据的呈现
    消息框仅能呈现简单的消息,大量的数据需要用一种更有效的方式. 表格是一种不错的形式,它把屏幕划分了若干行若干列,在
    每一个格子里显示不同的数据. excel表格很有名, 可以显示丰富的内容。 QT当然对此也有很好的支持
    是否用表格呈现数据是一个设计问题,
    对于大屏幕而言,表格是一种很好的表现形式,可以有一目了然之感,但对于小屏幕,则不一定合适。说不定文本框更好。
    是的, 表格往往只能显示一部分数据, 而整个的数据集在一个小小的屏幕上往往是不能显示的,必须要分很多屏,
    甚至需要查找功能才能找到需要的项。
    对,项就是表格中的一行,关系型数据库中也用这个概念. 所有的项构成了表格的行数。表格的列是需要自己定义的。
    表格是一种两维数组,qt 对此的支持有QTableWidget, 也有QTableView.
    QTableView 沿用了MVC 架构,简化为MV结构,将model与view分开,model 负责数据,view 负责显示,model和view 之间的接口是
    标准化的,qt 已经为我们写好了,如果达不到要求,我们可以继续继承开发自己的model 或者自己的view 来达到要求
    数据的呈现有很多方式,以上仅是一种方法而已。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值