18.QT-QPlainEdit 信号与槽

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 默认为1void copyAvailable ( bool yes );
//选择某串文字时,则触发该信号,并设置yes为true,如果取消选择,也会触发该信号,设置 yes为falsevoid 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_OBJECTQPlainTextEdit 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 = 0);
};#endif

 

Widget.c:

#include "Widget.h"Widget::Widget(QWidget *parent) :QWidget(parent),edit(this)
{edit.setGeometry(0,0,280,300);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(290,0,100,30);Redo->setGeometry(290,40,100,30);Cut->setGeometry(290,80,100,30);Copy->setGeometry(290,120,100,30);Paste->setGeometry(290,160,100,30);all->setGeometry(290,200,100,30);clear->setGeometry(290,240,100,30);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);
}

效果: 

 

 

 

 

转载于:https://www.cnblogs.com/lifexy/p/9003918.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/427737.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VS生成Cordova for Android应用之Gradle

VS生成Cordova for Android应用之Gradle 原文:VS生成Cordova for Android应用之Gradle一、Gradle简介 Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置&#xff0c;抛弃了基于XML的各种繁琐配置。 …

进一法整数php,进一法取整、四舍五入取整、忽略小数等的取整数方法大全

PHP取整数函数常用的四种方法,下面收集了四个函数&#xff1b;经常用到取整的函数&#xff0c;今天小小的总结一下&#xff01;其实很简单&#xff0c;就是几个函数而已&#xff5e;&#xff5e;主要是&#xff1a;ceil&#xff0c;floor&#xff0c;round&#xff0c;intvalPH…

pjax转发

pjax几大特点&#xff1a; 1、异步&#xff08;ajax&#xff09; 2、地址栏改变路径 3、实现前进和后退back和forword 如何解决&#xff1a;地址变了之后&#xff0c;万一F5刷新的问题&#xff0c;主要是通过后台判断是否为pjax请求&#xff0c;是的话做个标志&#xff0c;在前…

php全局cors,PHP开启CORS - slagga的个人页面 - OSCHINA - 中文开源技术交流社区

php后台响应头部代码//json头header("Content-type: application/json");//跨域header("Access-Control-Allow-Credentials: true");header("Access-Control-Allow-Origin: 跨域URL");//CORSheader("Access-Control-Request-Methods:GET, P…

嘻嘻

今天我们来聊一下如何减肥&#xff1f; 其实我也不知道&#xff0c;嘻嘻~ 开个玩笑 好了&#xff0c;今天我们继续来学习新的知识。 在前两篇文章中&#xff0c;我们接触到了索引的概念&#xff0c;今天我们要对索引进行一个拓展。首先我们先来看一下下面这段代码&#xff1a; …

mysql :完整性约束

---恢复内容开始--- 一&#xff1a;介绍 约束条件与数据类型的宽度一样 &#xff0c;都是可选参数 作用&#xff0c;用于保证数据的完整性和 一致性 主要分为&#xff1a; primary key (pk) 标识该字段为该表的主键&#xff0c; 可以唯一的标识记录 foreign key &#xff08;fk…

php htts cookies,Http和Https下的cookie的写入问题

session和cookie是不一样的session存储在服务器,cookie存储在客户端设置cookie:function setcookie ($name, $value null, $expire null, $path null, $domain null, $secure null, $httponly null) {}获取cookie:$_COOKIE[$sCookieName];题主的写法只是操作了服务器端的…

断言NSAssert的使用

NSAssert()的定义是 #define NSAssert(condition, desc) condition是条件表达式&#xff0c;值为yes或者no&#xff0c;在OC中规定0为假&#xff0c;非0就为真。 desc为异常描述&#xff0c;为NSString类型。 当condition为yes时程序继续运行&#xff1b; 当condition为no时程序…

五维图matlab,五维立体图,怎么画五维图(即以五边形反映各项水平)

一维、二维、三维、四维、五维分别是什么&#xff1f;线是一维的&#xff0c;参数是点 面是二维的&#xff0c;参数是线 体是三维的&#xff0c;参数是面 以此类推&#xff0c;以体为参数构成的空间就是四维空间&#xff0c;通常理解为时间&#xff0c;从很多科幻小说中可以看到…

java 做项目踩坑,web项目踩坑过程

sql函数设计&#xff1a;一开始本来是直接用Java的jdbc直接传输操作语句的。但后来学了存储过程发现存储过程可以提高不少的效率。就重构了自己对数据库的操作代码。包括&#xff1a;开启&#xff0c;查找&#xff0c;修改&#xff0c;关闭。开启&#xff1a;直接使用的构造函数…

python中主函数循环,带有菜单函数的Python主函数循环不起作用?

我现在是一名大学生&#xff0c;正在上python课程。我们的任务是用函数创建这个程序。main函数调用菜单&#xff0c;然后在main函数中编写一个循环&#xff0c;根据菜单函数中的用户响应访问其他函数。在我好像不能让我的循环工作。当我选择一个菜单选项时&#xff0c;什么都不…

在nocdb转pdb的时候遇到小bug

在nocdb转为pdb之后&#xff0c;发现有一个应用账号。从pdb使用expdp导出。导入其他nocdb。报错ORA-01917: user or role HUE does not exist[oraclelxtrac06 ~]$ more 1HUE.log ;;; Import: Release 12.2.0.1.0 - Production on Wed May 9 23:20:59 2018Copyright (c) 1982, 2…

matlab设计理想数字带通滤波器,基于matlab的数字带通滤波器课程设计报告

基于matlab的数字带通滤波器课程设计报告 1 西安文理学院机械电子工程系 课程设计报告 专业班级 08级电子信息工程1班 题 目 基于 MATLAB 的数字带通滤波器 学 号 学生姓名 指导教师 2011 年 12 月 西安文理学院机械电子工程系2 课程设计任务书 学生姓名 _______专业班级 _____…

php上传文件损坏,PHP 上传文件故障排除

PHP 文件上传时出现问题时&#xff0c;就要在表单、后台处理程序和服务器配置上找原因。最常见的故障原因有&#xff1a;PHP 配置不正确、服务器上的相关目录没有写权限、表单编写有问题等。如果在使用 PHP 上传时遇到问题&#xff0c;请参阅以下故障排除步骤&#xff1a;检查表…

xml序列号错误

xml序列号错误((XmlHelper.Deserialize))提示&#xff1a;XML 文档(1, 2)中有错误。{"不应有 <entryOrder xmlns>。"} 原因&#xff1a;1.缺少根目录&#xff08;<root>&#xff09;2.xml字段转换失败&#xff08;string->int&#xff09; ----------…

oracle 强制 断开,ORA-01092: ORACLE 例程终止。强行断开连接

dataguard服务器不能open&#xff0c;需要重启主服务器才能解决。如下&#xff1a;SQL> conn as sysdba;已连接到空闲例程。SQL> startup nomount;ORACLE 例程已经启动。Total System Global Area 1240186076 bytesFixed Size 453852 bytesVariable Si…

Mac远程连接服务器

方法一&#xff1a;ssh 方法二&#xff1a;commandK进入远程桌面&#xff0c;这种方式类似于windwos下的远程桌面 转载于:https://www.cnblogs.com/xiyuan2016/p/9020978.html

oracle v sql不存在,程序包oracle.sql不存在

今天项目在maven install 的时候报“程序包oracle.sql不存在&#xff0c;类TIMESTAMP找不到”的问题&#xff1a;plugins:maven-compiler-plugin:3.1:compile (default-compile) on project gdairport: Compilation failure: Compilation failure:...TimestameUtil.java:[7,18]…

关于windows10 CMD 的一些操作

之前接触过cmd的一些操作方法&#xff0c;比如用dir、tasklist等一些方法&#xff0c;但是用了会立马忘记&#xff0c;再用到时又要重新google&#xff0c;这着实让我头痛&#xff01;&#xff01;&#xff01; 今天又碰到一个关于改变目录的问题&#xff0c;又是纠结万分&…

oracle dblink 验证,Oracle DBLINK 简单使用

oracle在进行跨库访问时&#xff0c;可以通过创建dblink实现&#xff0c;今天就简单的介绍下如果创建dblink&#xff0c;以及通过dblink完成插入、修改、删除等操作首先了解下环境&#xff1a;在tnsnames.ora中配置两个数据库别名&#xff1a;orcl(用户名&#xff1a;wangyong …