QTextEdit捕捉回车信号
2013-05-26 09:53
155 查看
最近由于课程设计的需要,我选择用Qt开发一款简单的聊天程序。其中,输入框我选择QTextEdit,我的想法是,输入完毕之后敲回车键就能够将信息发送出去,但是遗憾的是,QTextEdit并不像QLineEdit那样,有一个enterPressed信号,取而代之的是,当你敲回车键的输入,只是起到输入换行的效果。于是我尝试着像QQ那样,以Ctrl + Enter组合键发送消息。
经过我查阅多方资料之后我,找到了捕捉Ctrl + Enter 组合键的方法。
首先定义MainWindow中的
bool eventFilter(QObject *obj,
QEvent *e);
函数,它是一个虚函数,权限设置为protected。
bool MainWindow::eventFilter(QObject *obj,
QEvent *e)
{
Q_ASSERT(obj == inputTextEdit);
if (e->type() == QEvent::KeyPress)
{
QKeyEvent *event = static_cast<QKeyEvent*>(e);
if (event->key() == Qt::Key_Return && (event->modifiers() & Qt::ControlModifier))
{
sendMsg(); //发送消息的槽
return true;
}
}
return false;
}
然后在QTextEdit的实例中安装这个过滤器:
msgInputtExtEdit = new QTextEdit();
...
msgInputTextEdit->installEventFilter(this);
这样以来在聊天的时候按下Ctrl + Enter键就能发送消息啦!
经过我查阅多方资料之后我,找到了捕捉Ctrl + Enter 组合键的方法。
首先定义MainWindow中的
bool eventFilter(QObject *obj,
QEvent *e);
函数,它是一个虚函数,权限设置为protected。
bool MainWindow::eventFilter(QObject *obj,
QEvent *e)
{
Q_ASSERT(obj == inputTextEdit);
if (e->type() == QEvent::KeyPress)
{
QKeyEvent *event = static_cast<QKeyEvent*>(e);
if (event->key() == Qt::Key_Return && (event->modifiers() & Qt::ControlModifier))
{
sendMsg(); //发送消息的槽
return true;
}
}
return false;
}
然后在QTextEdit的实例中安装这个过滤器:
msgInputtExtEdit = new QTextEdit();
...
msgInputTextEdit->installEventFilter(this);
这样以来在聊天的时候按下Ctrl + Enter键就能发送消息啦!
相关文章推荐
- QTextEdit捕捉回车信号
- QTextEdit捕捉回车信号
- .net,js捕捉文本框回车键事件的小例子(兼容多浏览器)
- signal信号捕捉
- .net,js捕捉文本框回车键事件的小例子(兼容多浏览器)
- java 捕捉信号(linux下的kill,ctrl+c)
- 在SHELL中捕捉信号的TRAP命令
- shell 脚本编程之信号捕捉和主机探测
- signal 函数捕捉信号
- Linux下的信号(三)----捕捉信号与sleep模拟
- 当子进程结束的时候,其设置的信号捕捉函数不会再父进程生效
- jquery捕捉回车键及获取checkbox值与异步请求的方法
- linux SIGSEGV 信号捕捉,保证发生段错误后程序不崩溃
- 漂亮的信号捕捉
- 捕捉段错误信号信号处理程序
- C++ wait捕捉的信号处理WIFEXITED/WEXITSTATUS/WIFSIGNALED
- sigaction 读取和修改与指定信号相关联的处理动作 捕捉信号ctr+c
- Linux 信号捕捉
- 捕捉到来自宇宙深空的神奇X-射线信号
- 信号的捕捉