18.QT-QPlainEdit 信号与槽
时间:2022-05-30
本文章向大家介绍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 默认为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 = 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);
}
效果:
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 如何提升前端基建的效能价值?
- iTerm2安装和配置
- 最新最全的mutect2教程
- Flutter基础widgets教程-CupertinoAlertDialog篇
- Spring的Controller是单例还是多例?怎么保证并发的安全
- 用TypeScript装饰器实现一个简单的依赖注入
- PING问题解决方法_20190305
- 前端需要掌握的设计模式
- @vue/composition-api速成课(通俗易懂版)
- 新1期视频第14课und异常中断模式的bug以及对应的解决方法
- 第一课:linux设备树的引入与体验(基于linux4.19内核版本)
- 第二课:linux设备树的规范(dts和dtb)
- 二叉树剪枝了解一下~
- 第三课:linux内核对设备树的处理
- 第四课:u-boot对设备树的支持