QTextEdit如何捕获回车信号

lufy_D 2017-03-21 06:07:01
各位大神,小弟今年毕设用qt做毕设,也是现学现做,其中有个功能是想实现类似于shell的功能,输入命令后按回车键然后会执行相应的命令。
我在mainwindow上添加一个textedit控件,然后上网查了一下如何在QtextEdit捕获回车信号,于是我百度了一下。发现一篇文章,他的做法如下:
按照这篇帖子的说法,他最后把Qt::Enter改为Qt::Return是实现了在textedit里捕获回车信号的。
于是我照搬了他的方法,然而结果却是我按下键盘上的任何按键,都会执行textEnterPressed信号的槽函数。请问各位大神这是怎么回事?做毕设着急,求大神们知道,不胜感激!
...全文
3510 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
DaGod123 2018-08-09
  • 打赏
  • 举报
回复
https://blog.csdn.net/qiqi123i/article/details/80216528
不错有代码可以自己看看
zheguzai000 2018-08-06
  • 打赏
  • 举报
回复
如果你想捕捉QTextEdit控件中的回车事件,应该重写一个类继承QTextEdit类,然后再新写的类里面重写KeyEvent()事件函数,通过判断在按下回车的时候发送信号就可以获取到了。
亭台六七座 2018-08-03
  • 打赏
  • 举报
回复
如果没有回车信号,可以提升控件自己实现
判断字符是否为回车,是就发送信号
_ dingding_ 2018-05-06
  • 打赏
  • 举报
回复
今天刚解决这个问题https://blog.csdn.net/qiqi123i/article/details/80216528
bestman 2017-03-28
  • 打赏
  • 举报
回复

class MainWindow : public QMainWindow
  {
  public:
      MainWindow();

  protected:
      bool eventFilter(QObject *obj, QEvent *ev);

  private:
      QTextEdit *textEdit;
  };

  MainWindow::MainWindow()
  {
      textEdit = new QTextEdit;
      setCentralWidget(textEdit);

      textEdit->installEventFilter(this);
  }

  bool MainWindow::eventFilter(QObject *obj, QEvent *event)
  {
      if (obj == textEdit) {
          if (event->type() == QEvent::KeyPress) {
              QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event);
              qDebug() << "Ate key press" << keyEvent->key();
              return true;
          } else {
              return false;
          }
      } else {
          // pass the event on to the parent class
          return QMainWindow::eventFilter(obj, event);
      }
  }
你return的不对
ningto.com 2017-03-28
  • 打赏
  • 举报
回复

ui->textEdit->installEventFilter(this);

bool MainWindow::eventFilter(QObject *watched, QEvent *event)
{
    if (watched == ui->textEdit) {
        if (event->type() == QEvent::KeyPress) {
            QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event);
            if (keyEvent->key() == Qt::Key_Return || keyEvent->key() == Qt::Key_Enter) {
                qDebug() << "1111111111";
                return true;
            }
        }
    }
    return false;
}

这样写没问题啊,把emit textEnterPressed()去掉看是不是正确的,应该是其他地方的问题
fxbszj 2017-03-24
  • 打赏
  • 举报
回复
QTextEdit里换行默认会认为是文字换行。 如果你想要想要回应回车事件,应该用QLineEdit比较好 QLineEdit的时候会触发returnPressed()信号,你写个槽函数,然后与returnPressed()信号绑定就可以实现

16,227

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧