Qt 如何设置textedit控件按下enter就把消息发出去?

Qt 如何设置textedit控件按下enter就把消息发出去?
如图效果:
上面是一个textBrowser控件,用来显示我发的东西
下面是一个textedit控件,用来发东西

所以,这里实现的是在textedit里面输入文字,按下enter之后,文字到上面去了,当然也可以单击“发送”

ui界面如图:
Qt 如何设置textedit控件按下enter就把消息发出去?

代码如下
widget.h中

 1 #ifndef WIDGET_H
 2 #define WIDGET_H
 3 
 4 #include <QWidget>
 5 
 6 namespace Ui {
 7 class Widget;
 8 }
 9 
10 class Widget : public QWidget
11 {
12     Q_OBJECT
13 
14 public:
15     explicit Widget(QWidget *parent = 0);
16     ~Widget();
17 protected:
18     bool eventFilter(QObject *target, QEvent *event);//事件过滤器
19 
20 private slots:
21     void on_send_clicked();
22 
23 private:
24     Ui::Widget *ui;
25 };
26 
27 #endif // WIDGET_H

widget.cpp

 1 #include "widget.h"
 2 #include "ui_widget.h"
 3 #include<QKeyEvent>
 4 Widget::Widget(QWidget *parent) :
 5     QWidget(parent),
 6     ui(new Ui::Widget)
 7 {
 8     ui->setupUi(this);
 9     ui->textEdit->setFocusPolicy(Qt::StrongFocus);
10     ui->textBrowser->setFocusPolicy(Qt::NoFocus);
11 
12     ui->textEdit->setFocus();
13     ui->textEdit->installEventFilter(this);//设置完后自动调用其eventFilter函数
14 
15 }
16 
17 Widget::~Widget()
18 {
19     delete ui;
20 }
21 bool Widget::eventFilter(QObject *target, QEvent *event)
22 {
23     if(target == ui->textEdit)
24     {
25         if(event->type() == QEvent::KeyPress)//回车键
26         {
27              QKeyEvent *k = static_cast<QKeyEvent *>(event);
28              if(k->key() == Qt::Key_Return)
29              {
30                  on_send_clicked();
31                  return true;
32              }
33         }
34     }
35     return QWidget::eventFilter(target,event);
36 }
37 
38 void Widget::on_send_clicked()
39 {
40     QString msg = ui->textEdit->toHtml();
41     ui->textEdit->clear();
42     ui->textEdit->setFocus();
43     ui->textBrowser->append(msg);
44 
45 }

 

上一篇:WinForm------TextEdit只能输入数字


下一篇:如何有效地设置QTextEdit的背景