繁体   English   中英

如何在Qt应用程序中嵌入Linux命令行编辑器?

[英]How to embed a Linux command-line like editor into a Qt app?

在使用键盘在字符网格周围移动之前,我使用了一个很棒的吉他制表应用程序。 您可以在任何字符单元格中输入任何数字。 这是一张图片:

在此处输入图片说明

实际上, 它的工作原理与Linux控制台相同在Linux控制台中 ,您有一个光标块,并且可以一个字符一个字符地移动。

我使用Qt作为我的GUI应用程序。 我该如何在应用程序中添加这种类型的单字符编辑器控件? 在进行GUI编程时,我还没有遇到过这种类型的小部件。 因此,我什至不知道该怎么称呼或如何简洁地描述它。

谢谢。

首先,您必须为要在按下/释放/按住时响应的每个按键实现处理程序。

窗口小部件的实现就像实现带有NavigatingEditing等状态的有限状态机一样。

对于每个按下的键,您将采取相应的措施来更新小部件或执行其他操作,包括更改小部件的状态。

在高级形式上,这将是:

void MyCrazyWidget::on_keyDown(QKeyEvent event) {
    switch ( this->state() ) {
        case State::Navigating:
            this->navigatingStateHandleKeyDown(event);
            break;
        case State::Editing:
            this->editingStateHandleKeyDown(event);
            break;
        default:
            // waaaat???
    }
}

void MyCrazyWidget::navigatingStateHandleKeyDown(QKeyEvent event) {
    switch ( event.key() ) {
        // handle each of the keys here (or simply ignore those without an action).
    }
}

void MyCrazyWidget::editingStateHandleKeyDown(QKeyEvent event) {
    switch ( event.key() ) {
        // handle each of the keys here (or simply ignore those without an action).
    }
}

这显然是非常高的水平,但是几乎可以处理所有这些事情(afaik)。 这是一项无聊而艰巨的工作,但我们确实需要我们的编辑人员; D

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM