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#include #include #include 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);}
效果: