[英]How to embed a Linux command-line like editor into a Qt app?
在使用键盘在字符网格周围移动之前,我使用了一个很棒的吉他制表应用程序。 您可以在任何字符单元格中输入任何数字。 这是一张图片:
实际上, 它的工作原理与Linux控制台相同 , 在Linux控制台中 ,您有一个光标块,并且可以一个字符一个字符地移动。
我使用Qt作为我的GUI应用程序。 我该如何在应用程序中添加这种类型的单字符编辑器控件? 在进行GUI编程时,我还没有遇到过这种类型的小部件。 因此,我什至不知道该怎么称呼或如何简洁地描述它。
谢谢。
首先,您必须为要在按下/释放/按住时响应的每个按键实现处理程序。
窗口小部件的实现就像实现带有Navigating
和Editing
等状态的有限状态机一样。
对于每个按下的键,您将采取相应的措施来更新小部件或执行其他操作,包括更改小部件的状态。
在高级形式上,这将是:
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.