Qt笔记一

最近接触做了一下Linxu下的Qt开发,遇到一些问题,现在总结记录一下。

我们的设备只支持按键,为了好的用户体验,必须做到按键设置符合人的习惯,Qt很多操作习惯默认都支持鼠标。在使用QcheckBox时,想要上下左右键切换,在基本的处理按键事件,设定光标之外,重要的一点要将他放在QGroupBox中,不然Qt总是使用自己默认的一套光标移动规则。


代码简单如下:

//按键切换,需要放到QButtonGroup里
    QButtonGroup *checkBoxGroup = new QButtonGroup;
    checkBoxGroup->setExclusive(false);
    checkBoxGroup->addButton(ui->checkBox_HzOverLimit);
    checkBoxGroup->addButton(ui->checkBox_HzUnderLimit);
    checkBoxGroup->addButton(ui->checkBox_VNegSeqImbOverLimit);
    checkBoxGroup->addButton(ui->checkBox_ANegSeqImbOverLimit);
    checkBoxGroup->addButton(ui->checkBox_VOffsetOverLimit);
    checkBoxGroup->addButton(ui->checkBox_VOffsetUnderLimit);
    checkBoxGroup->addButton(ui->checkBox_HarVConOverLimit);
    checkBoxGroup->addButton(ui->checkBox_HarAValOverLimit);
    checkBoxGroup->addButton(ui->checkBox_VZeroSeqImbOverLimit);
    checkBoxGroup->addButton(ui->checkBox_AZeroSeqImbOverLimit);
    checkBoxGroup->addButton(ui->checkBox_VTotalDisOverLimit);


void Relay::keyReleaseEvent(QKeyEvent *event)
{
    if(event->key() == Qt::Key_Escape){
        event->setAccepted(true);
        if(ui->tabWidget->hasFocus()){
            emit closeWidget();
            return;
        }
        else
            ui->tabWidget->setFocus();
    }
}
代码就是写一下按键释放事件,无非是
<pre name="code" class="cpp">if(ui->xx_now->hasFocus()){
   ui->xx_next->setFoucs();
   return;
}
记得要return 不然按键事件会继续传递下去,Qt 也提供了event->setAccepted(true);保险起见,都用上。
 
在qml中可能会出现多余显示的问题,这个问题困扰了很长时间,以为是内存问题,原来只是多加了一个没用的button,后来没有清除掉。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值