c++ - Qt : send Key_Return and Key_Delete events

标签 c++ qt events embedded

我正在使用 Qt Embedded 开发虚拟键盘,但遇到了一个小问题。事实上,我使用 SignalMappers 将键映射到键盘事件,以便在 QTextEdit 小部件中显示文本。

一切正常,除了两个事件:Key_Return 和 Key_Delete ;我不知道我做错了什么,也许你会有想法。

这是一个经典的代码,发送字符:

void VirtualKeyboard::SendChar( int index )
{
    QChar charToSend( letters_.at( index )->text().at( 0 ) ); // Get char

    server_->sendKeyEvent( charToSend.unicode(), QEvent::KeyPress, Qt::NoModifier, true, false );
}

letters_ 是一个包含 QPushButton* 的 QVector,server_QWSServer 的实例;此代码工作正常。 现在,例如使用退格键:

void VirtualKeyboard::SendBackspace()
{
    server_->sendKeyEvent( Qt::Key_Backspace, Qt::Key_Backspace, Qt::NoModifier, true, false );
}

这段代码也能正常工作。以及不起作用的代码:

void VirtualKeyboard::SendDelete()
{
    server_->sendKeyEvent( Qt::Key_Delete, Qt::Key_Delete, Qt::NoModifier, true, false );
}

void VirtualKeyboard::SendEnter()
{  
    server_->sendKeyEvent( 0x01000004, Qt::Key_Return, Qt::NoModifier, true, false ); 
}

如您所见,我尝试输入一个 unicode 值,但没有用;你能帮帮我吗?

谢谢!


使用以下代码解决(参见评论):

void TextEdit::DeleteEvent()
{
    if( cursor_.hasSelection() )
    {
        // Delete selection
        cursor_.removeSelectedText();
    }
    else
    {
        // Delete right char
        cursor_.deleteChar();
    }

    setTextCursor( cursor_ );
}

void TextEdit::ReturnEvent()
{
    cursor_.insertText( "\n" );
    setTextCursor( cursor_ );
}

cursor_ 是一个 QTextCursor 属性,用这一行初始化:

cursor_ = textCursor();

最佳答案

使用以下代码解决(参见评论):

void TextEdit::DeleteEvent()
{
    if( cursor_.hasSelection() )
    {
        // Delete selection
        cursor_.removeSelectedText();
    }
    else
    {
        // Delete right char
        cursor_.deleteChar();
    }

    setTextCursor( cursor_ );
}

void TextEdit::ReturnEvent()
{
    cursor_.insertText( "\n" );
    setTextCursor( cursor_ );
}

cursor_ 是一个 QTextCursor 属性,用这一行初始化:

cursor_ = textCursor();

关于c++ - Qt : send Key_Return and Key_Delete events,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8254019/

相关文章:

c++ - 如何从控制台读取空格分隔的数字?

c++ - 如何在启动时隐藏鼠标指针?

c++ - wglGetCurrentDC 未解析的外部

wcf - 防止 MVVM ServiceAgent 事件多次连接

c++ - 我如何使用 CryptoAPI 在 Windows7 上获取证书信任列表

c++ - 结构错误 "uninitialized reference member"

c++ - QTcpSocket::write - 如何写入大文件?

java - 每次都会调用 ContextRefreshedEvent 而不是 ContextStartedEvent

c# - 等待来自永无止境的任务的事件异步

c++ - 为枚举赋值