Essential Qt 第二十四章 数据显示(四) 使用委托

        在前一章里处理了一个用户可能出现的错误,即在年龄这一列的输入了一个非数字时,忽略用户的操作。在有人机交互的程序中,最大的麻烦就是用户无意的操作对数据造成的破坏。数据最大的梦魇并不是来自电影里黑客的攻击,用户无意间的操作对数据的破坏才是最常见,这里错误往往经常性的且没有任何规律的出现,并且极难第一时间发现,排查。

        在Qt的模型/视图结构中,额外提供了委托的概念,用于处理此类情况。虽然委托的作用并非全部是保证用户对数据操作的安全性,但他在这方面确实非常出色。

        如果你对委托没有任何概念也没有关系,我们先来继续研究上一章的例子,在上一章的例子中,年龄这一列只能输入数字,但这还不够,比如医生输入了一个132,他其实想输入32这个数字的,对于年龄这样的数据,输错了影响也许不会很大,但一些关键性的医疗数据输错的话就会引起医疗事故,而作为医生,这类错误似乎也很难避免,毕竟专业打字员都可能打错字,何况医生不是打字员。

         以上一章的程序为例,一个可行的解决办法类似下图

         在年龄这一列做一个提示功能,如果医生输入了18-35,则字体为黑色,表示正常,如果医生输入了13-18或者35-55区间内的数字,则字体为绿色,这提示医生,你输入的年龄偏大或偏小,如果输入无误,这也可以提示医生,这名孕妇的年龄偏小或偏大,无论医疗措施或者用药均需要额外慎重,如果医生输入的年龄小于13或者大于55,那字体则显示为红色,这提示医生,你输入的这项数据很有可能是错误的。

          要实现这样功能,就需要使用Qt的委托,Qt提供了QItemDelegate来实现默认的委托,而对于上面的这项功能,需要自定义委托,所以需要继承QItemDelegate来实现自定义委托,先看下委托的头文件.

class PatientInfoDelegate : public QItemDelegate
{
    Q_OBJECT
public:
    explicit PatientInfoDelegate(QObject *parent = 0);
    void paint(QPainter *painte
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值