Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将Linux命令行编辑器嵌入到Qt应用程序中?_Qt - Fatal编程技术网

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

如何将Linux命令行编辑器嵌入到Qt应用程序中?,qt,Qt,有一个很酷的吉他标签应用程序,我以前用过,你可以用键盘在字符网格上移动。您可以在任何字符单元格中输入任何数字。这是一张图片: 实际上,它的工作原理与Linux控制台的工作原理类似,在Linux控制台中,您有一个光标块,可以逐个字符移动 我使用Qt作为我的GUI应用程序。如何在应用程序中添加这种类型的单字符编辑器控件?在我接触GUI编程的过程中,我没有遇到过这种类型的小部件;因此,我甚至不知道该怎么称呼它,也不知道如何简洁地描述它 谢谢。首先,当按下/释放/保持时,您必须为要响应的每个键实现处理

有一个很酷的吉他标签应用程序,我以前用过,你可以用键盘在字符网格上移动。您可以在任何字符单元格中输入任何数字。这是一张图片:

实际上,它的工作原理与Linux控制台的工作原理类似,在Linux控制台中,您有一个光标块,可以逐个字符移动

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


谢谢。

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

小部件的实现类似于实现一个有限状态机,其状态类似于
导航
编辑
等等

对于每个按下的键,您都会相应地更新小部件或执行另一个操作,包括更改小部件的状态

在高级形式中,这类似于:

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

Hmm,尝试使用带有某种参考底图的QPlainTextEdit是很有诱惑力的。你会得到很多免费的东西,比如撤销/重做。不确定这是否可行。只是个主意。