ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-02-08 10:04:52  阅读:230  来源: 互联网

标签:控件 Widget Qt textedit textEdit ui QWidget include event


这里写图片描述
如图效果:
上面是一个textBrowser控件,用来显示我发的东西
下面是一个textedit控件,用来发东西

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

ui界面如图:
这里写图片描述

代码如下
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 }

 

标签:控件,Widget,Qt,textedit,textEdit,ui,QWidget,include,event
来源: https://www.cnblogs.com/ybqjymy/p/14387695.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有