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,後來沒有清除掉。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章