如何将Linux命令行编辑器嵌入到Qt应用程序中?
有一个很酷的吉他标签应用程序,我以前用过,你可以用键盘在字符网格上移动。您可以在任何字符单元格中输入任何数字。这是一张图片: 实际上,它的工作原理与Linux控制台的工作原理类似,在Linux控制台中,您有一个光标块,可以逐个字符移动 我使用Qt作为我的GUI应用程序。如何在应用程序中添加这种类型的单字符编辑器控件?在我接触GUI编程的过程中,我没有遇到过这种类型的小部件;因此,我甚至不知道该怎么称呼它,也不知道如何简洁地描述它如何将Linux命令行编辑器嵌入到Qt应用程序中?,qt,Qt,有一个很酷的吉他标签应用程序,我以前用过,你可以用键盘在字符网格上移动。您可以在任何字符单元格中输入任何数字。这是一张图片: 实际上,它的工作原理与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)。这是一项枯燥而艰苦的工作,但我们确实需要我们的编辑;DHmm,尝试使用带有某种参考底图的QPlainTextEdit是很有诱惑力的。你会得到很多免费的东西,比如撤销/重做。不确定这是否可行。只是个主意。