C++之Qt组合键Insert+Space实现
在Qt C++编程中,使用Insert+Space插入全角空格,经常会出现被输入法拦截的情况,以下代码可解决这个问题,大家可以借鉴一下。
bool CFindReplaceDlg::eventFilter(QObject *obj, QEvent * event)
{
static bool bPressInsert(false);
QComboBox* pCurActiveCombo = dynamic_cast<QComboBox*>(obj);
bool bSuccess(false);
if(event->type() == QEvent::KeyPress)
{
QKeyEvent* kEvent = static_cast<QKeyEvent*>(event);
if(kEvent->key() == Qt::Key_Return || kEvent->key() == Qt::Key_Enter){
on_findNextPushButton_clicked();
}else if(pCurActiveCombo && (kEvent->key() == Qt::Key_Insert)){
bPressInsert = true;
}else if(bPressInsert && (kEvent->key() == Qt::Key_Space)){
bSuccess = true;
}
}else if(bPressInsert && (event->type() == QEvent::InputMethod)){
bSuccess = true;
}
if(bSuccess){
if(pCurActiveCombo == ui->findComboBox){
m_strSelectText = InsertCharacterInCombo(ui->findComboBox).toStdString();
}else if(pCurActiveCombo == ui->replaceComboBox){
InsertCharacterInCombo(ui->replaceComboBox);
}
bPressInsert = false;
return true;
}
return QDialog::eventFilter(obj, event);
}