QPlainEdit编辑功能

Public Slots

void appendHtml ( const QString & html )
void appendPlainText ( const QString & text )
void centerCursor ()
void clear ()
void copy ()
void cut ()
void insertPlainText ( const QString & text )
void paste ()
void redo ()
void selectAll ()
void setPlainText ( const QString & text )
void undo ()

Signals

void blockCountChanged ( int newBlockCount );
//每当按下回车或者删除回车(更新字符块),则newBlockCount计数,并触发该信号, newBlockCount 默认为1 void copyAvailable ( bool yes );
//选择某串文字时,则触发该信号,并设置yes为true,如果取消选择,也会触发该信号,设置 yes为false void cursorPositionChanged ()
////每当光标的位置发生变化时,触发该信号 void redoAvailable ( bool available );
//当文本框为空,则会触发该信号,并设置available为false,因为该文本框没有数据,所以无法重做
//当用户向空文本框输入数据时,同样也会触发该信号,设置available为true,表示可以实现重做 void selectionChanged ();
//当鼠标点击文本框时,触发该信号 void textChanged ();
//每当文档的内容发生变化时,则触发该信号,可以用来判断输入的字符是什么 void undoAvailable ( bool available );
//当用户无法撤销时,便会触发该信号,并设置available为false
//当用户修改/写入文本框内容,便会触发该信号,并设置available为true,表示可以撤销

示例代码

Widget.h:

#ifndef WIDGET_H
#define WIDGET_H #include <QWidget>
#include <QPlainTextEdit>
#include <QPushButton>
#include <QDebug> class Widget : public QWidget
{
Q_OBJECT QPlainTextEdit edit;
QPushButton* Undo;
QPushButton* Redo;
QPushButton* Cut;
QPushButton* Copy;
QPushButton* Paste;
QPushButton* all;
QPushButton* clear; private slots:
void oncopyAvailable ( bool yes );
void onredoAvailable ( bool available );
void onundoAvailable ( bool available );
public:
explicit Widget(QWidget *parent = );
}; #endif

Widget.c:

#include "Widget.h"

Widget::Widget(QWidget *parent) :
QWidget(parent),
edit(this)
{
edit.setGeometry(,,,); Undo= new QPushButton("重做",this);
Redo= new QPushButton("撤销",this);
Cut= new QPushButton("剪切",this);
Copy= new QPushButton("复制",this);
Paste= new QPushButton("拷贝",this);
all= new QPushButton("全选",this);
clear= new QPushButton("删除",this);
Undo->setGeometry(,,,);
Redo->setGeometry(,,,);
Cut->setGeometry(,,,);
Copy->setGeometry(,,,);
Paste->setGeometry(,,,);
all->setGeometry(,,,);
clear->setGeometry(,,,);
Undo->setEnabled(false);
Redo->setEnabled(false);
Cut->setEnabled(false);
Copy->setEnabled(false); /*设置按键与文本框槽的关系*/
connect(Undo, SIGNAL(clicked()) , &edit ,SLOT(undo()));
connect(Redo, SIGNAL(clicked()) , &edit ,SLOT(redo()));
connect(Cut, SIGNAL(clicked()) , &edit ,SLOT(cut()));
connect(Copy, SIGNAL(clicked()) , &edit ,SLOT(copy()));
connect(Paste, SIGNAL(clicked()) , &edit ,SLOT(paste()));
connect(all, SIGNAL(clicked()) , &edit ,SLOT(selectAll()));
connect(clear, SIGNAL(clicked()) , &edit ,SLOT(clear())); /*设置文本框信号与槽函数的关系*/
connect(&edit, SIGNAL(copyAvailable(bool)) , this ,SLOT(oncopyAvailable(bool)));
connect(&edit, SIGNAL(redoAvailable(bool)) , this ,SLOT(onredoAvailable(bool)));
connect(&edit, SIGNAL(undoAvailable(bool)) , this ,SLOT(onundoAvailable(bool)));
connect(&edit, SIGNAL(selectionChanged()) , this ,SLOT(onselectionChanged())); } void Widget::oncopyAvailable ( bool yes )
{
Cut->setEnabled(yes);
Copy->setEnabled(yes);
} void Widget::onredoAvailable( bool available )
{
Redo->setEnabled(available);
} void Widget::onundoAvailable ( bool available )
{
Undo->setEnabled(available);
}

效果: 

 

18.QT-QPlainEdit 信号与槽的更多相关文章

  1. QT点击"X"按钮,调用closeEvent()函数来实现调用特定事件(附:粗略介绍QT的信号与槽的使用方法)

    背景: QT在用户关闭窗口(直接点击"X"键)时,程序一般都需要做一些善后的事情,就我现在的程序来说,既关闭USB.如何实现? 正文: 首先,在对应窗体的".h" ...

  2. qt中信号与槽机制

    一. 简介 就我个人来理解,信号槽机制与Windows下消息机制类似,消息机制是基于回调函数,Qt中用信号与槽来代替函数指针,使程序更安全简洁. 信号和槽机制是 Qt 的核心机制,可以让编程人员将互不 ...

  3. QT 的信号与槽

    转载: QT 的信号与槽机制介绍 QT 是一个跨平台的 C++ GUI 应用构架,它提供了丰富的窗口部件集,具有面向对象.易于扩展.真正的组件编程等特点,更为引人注目的是目前 Linux 上最为流行的 ...

  4. QT的信号与槽机制介绍

      信号与槽作为QT的核心机制在QT编程中有着广泛的应用,本文介绍了信号与槽的一些基本概念.元对象工具以及在实际使用过程中应注意的一些问题. QT是一个跨平台的C++ GUI应用构架,它提供了丰富的窗 ...

  5. Qt 的信号与槽机制介绍(10个要注意的问题)

    QT 是一个跨平台的 C++ GUI 应用构架,它提供了丰富的窗口部件集,具有面向对象.易于扩展.真正的组件编程等特点,更为引人注目的是目前 Linux 上最为流行的 KDE 桌面环境就是建立在 QT ...

  6. C++框架_之Qt的信号和槽的详解

    C++_之Qt的信号和槽的详解 1.概述 信号槽是 Qt 框架引以为豪的机制之一.所谓信号槽,实际就是观察者模式.当某个事件发生之后,比如,按钮检测到自己被点击了一下,它就会发出一个信号(signal ...

  7. 【qt】QT 的信号与槽机制

    QT 是一个跨平台的 C++ GUI 应用构架,它提供了丰富的窗口部件集,具有面向对象.易于扩展.真正的组件编程等特点,更为引人注目的是目前 Linux 上最为流行的 KDE 桌面环境就是建立在 QT ...

  8. QT的信号和槽机制简介

    信号与槽作为QT的核心机制在QT编程中有着广泛的应用,本文介绍了信号与槽的一些基本概念.元对象工具以及在实际使用过程中应注意的一些问题. QT是一个跨平台的C++ GUI应用构架,它提供了丰富的窗口部 ...

  9. Qt的信号和槽是如何工作的

    用Qt做过开发的朋友,不知道是否曾为下面这些问题疑惑过:我们知道Qt是基于C++的,Qt写的代码最终还是要由C++编译器来编译,但是我们的Qt代码中有很多C++里没有的关键字,比如slots\sign ...

  10. QT_5_ Qt中信号和槽 + 自定义信号和槽 + lambda 表达式

    1.Qt中信号和槽 1.1 需求:点击按钮关闭窗口 1.2 利用connect进行链接 1.3 参数1 信号发送者(指针) 参数2 发送的信号(信号地址) 参数3 信号的接受者(指针) 参数4 处理槽 ...

随机推荐

  1. vue.js 系列教程

    Vuejs——(1)入门(单向绑定.双向绑定.列表渲染.响应函数) Vuejs——(2)Vue生命周期,数据,手动挂载,指令,过滤器 Vuejs——(3)计算属性,样式和类绑定 Vuejs——(4)v ...

  2. Maven2-坐标

    什么是Maven坐标? 在生活中,每个城市,地点,都有自己独一无二的坐标,这样快递小哥才能将快递送到我们手上.类似于现实生活,Maven的世界也有很多城市,那就是数量巨大的构件,也就是我们平时用的ja ...

  3. 【腾讯Bugly干货分享】WebSocket 浅析

    本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:http://mp.weixin.qq.com/s/7aXMdnajINt0C5dcJy2USg 前言 在W ...

  4. 【渗透技术】渗透测试技术分析_TomCat

    [渗透技术]渗透测试技术分析_TomCat 本文转自:i春秋论坛 渗透测试-中间人攻击(原理)说起“中间人攻击”我想大多数对渗透测试又了解的朋友都多少有所了解,因为我们用到的次数真是非常的多.它可以将 ...

  5. 致我们再也回不去的 Github ...

    本文原文来自公众号 stormzhang,原作者自称“二流学校毕业.非科班出身.从 0 自学编程到现在的「段子张」”. 1.前言   相信大家都知道了,微软已确认要收购 GitHub 了,Github ...

  6. 每天学点SpringCloud(六):Hystrix使用

    Hystrix是一个实现断路器模式的库.什么是断路器模式呢?就像我们家庭中的电闸一样,如果有那一处出现意外,那么电闸就会立刻跳闸来防止因为这一处意外而引起更大的事故,直到我们确认处理完那一处意外后才可 ...

  7. 使用token和redis怎样判断账户是否失效和异地登录

    思路: 将token作为value,账户的id作为key 每次登录都去redis中查询该账户的登录是否过期,没有过期则删掉原来的id,token,将新生成token作为value存入redis中.过期 ...

  8. GDB dump mem example和命令

    使用方法: You can use the commands dump, append, and restore to copy data between target memory and a fi ...

  9. JWT(Json web token)简介

    Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(S ...

  10. Fiddler修改请求、返回数据

    相信你们有听过说“绕过前端”,但是可能想不到要怎样才能绕过前端呢? 首先,我们要知道什么是绕过前端?比如:登录用户名限制数字.6位,用户在登录页面填写用户名符合要求,使用Fiddler作为代理,拦截登 ...