Qt 总结---打印机界面

这两天一直在写qt,刚入门,也没什么好教材可以参考,只能是一边写,一边百度,一边请教。。

写这个界面花了很长时间,遇到很多问题,可能是qt上一些常用的用法,但对于新手,却不得不是一个坎。吃一堑长一智,以后一定会越写越顺的。


1.多界面

首先添加文件new----Qt---Qt designer from class---widget

在主窗口文件包含副窗口的头文件:include"widget.h"

然后创建对象:Widget Aui;

调用副窗口就用Aui.exec();

            或者Aui.show();

这两者的区别是,用exec会阻塞,也就是会留在exec不会往下执行,而用show不会!!


2.锁定当前窗口

这个简单,在构造函数里面调用

setModal(ok);
就ok了。。


3.将LineEdit里的字符串转化成数字
     bool ok = 1;
    tempu = ui->lineEdit_SetTmp->text();
    temp = tempu.toInt(&ok,10);


4.窗口间数据传递

  qDebug()<<setTmpUI.temp;  //这里的访问用了.   而不是->

直接访问类成员函数


5.事件过滤器!!!这个重要,困扰了很久

我想获得光标在哪个LineEdit里,以便我输入显示,但是用什么信号都不好,最后用事件过滤器解决了。

事件过滤器可以用来监视对象

用C++ GUI Qt4上面的话:QObject实例在看到他自己的事件之前,可以通过设置另一个QObject实例来先监视这些事件。


首先在构造函数里面添加 对目标对象调用installEventFiler()来监视对象:

    ui->lineEdit_czry->installEventFilter(this);
   
 ui->lineEdit_mjrq->installEventFilter(this);
   
  ui->lineEdit_sxrq->installEventFilter(this);
   
  ui->lineEdit_mjqh->installEventFilter(this);
   
 
ui->lineEdit_dyxh->installEventFilter(this);
    ui->lineEdit_rqjz->installEventFilter(this);

然后声明处理函数:
  bool eventFilter(QObject *watched,QEvent *event); //

然后实现这个函数:

bool Setoption::eventFilter(QObject *watched,QEvent *event)
{
    if (watched==ui->lineEdit_czry)         //首先判断控件(这里指 lineEdit1)
    {
         if (event->type()==QEvent::FocusIn)     //然后再判断控件的具体事件 (这里指获得焦点事件)
         {
             flag=6;
         }
         else if (event->type()==QEvent::FocusOut)    // 这里指 lineEdit1 控件的失去焦点事件
         {


          }
    }

  ......

return QWidget::eventFilter(watched,event);     // 最后将事件交给上层对话框?????????

}





  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值