在做好界面的布局后,开始对各个控件的处理。
首先是QTextEdit *com_data_edit, 串口接收数据窗口,同时也可以在此编辑框里实现键盘输入转换成串口输出。在默认的情况下,QTextEdit的字符输入会直接在其窗口显示,而且会有鼠标右健菜单,鼠标中键的粘贴功能。在我的设计中,需要拦截键盘按键事件,拦截到的键盘按键直接通过串口发送出去;需要屏蔽鼠标右键菜单的粘贴功能,鼠标中键的粘贴功能。关于拦截键盘按键,网上查找到用事件过滤器的办法来处理。先在工程的Widget类里重载bool eventFilter(QObject *obj, QEvent *event),这是QOjbect的事件过滤器函数。设置com_data_edit使用事件过滤器:com_data_edit->installEventFilter(this)。重载的eventFilter具体实现如下:
bool Widget::eventFilter(QObject *obj, QEvent *event)
{
if (obj == com_data_edit)
{
//qDebug ("edit %d", event->type());
if (event->type() == QEvent::KeyPress)//拦截com_data_edit的键盘按下事件,拦截成功返回true
{
QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
qDebug ("key %d", keyEvent->key());
return true;
}