Qt中如何实现QTextEdit中文字的单个删除 和 连续删除

      前两天有人问我关于如题所示的问题,具体就是说:现在他想做一个按钮,当click它时:只删除编辑框中的一个文字,而当常按press时:则连续的删除文字,此后一旦release,则立即停止删除问题。

      关于如何删除一个文字,这个很好实现,这里把重点放在:如何区分这两种状态上。

      我在实现时:只用了一个定时器。总体为:当第一次press时间达到0.5s时开始连续删除,如果按压的时间不足0.5s即release,则只删除一个文字;  而连续删除文字时:是每隔0.1s删除一个,一旦中途release了,则立即停止删除文字。

      代码如下,可以直接拿来用,当然,你需要自己手动实现删除编辑框中一个文字的函数DeleteOneCharacterInEditor()。

 

 timer1 = = new QTimer(this);

 

QObject::connect(timer1, SIGNAL(timeout ()),

this, SLOT(DeleteOneCharacter()));

QObject::connect(iDeleteButton, SIGNAL(pressed()),this , SLOT(PressDelete()));

QObject::connect(iDeleteButton, SIGNAL(released ()),this, SLOT(ReleaseDelete()));

 

 //-----------------------------------------------------------------------------------------

void  test::PressDelete()  

{

      press = 1;

      timer1->setSingleShot(

true);

      timer1->start(500); 

}

 

void 

test::DeleteOneCharacter()

{

     if(mEditor)

     {

          DeleteOneCharacterInEditor();

     }

     press = 0; 

     timer1->start(100); 

}

 

void   test::ReleaseDelete()

    timer1->stop(); 

    if(press == 1)

    {

        if(mEditor)  

        {

            DeleteOneCharacterInEditor();

        }

}

 

 

 测试环境: qt 4.5.2 qt4.5.0 qt4.6.2 for symbian for windows

你可能感兴趣的:(Qt)