PstdEr
1st July 2013, 08:12
I am trying to avoid backspace from removing a character from
QTextEdit if my QTextEdit has only prompt.
I tried in few ways, but eventFilter is not working as expected.
some times my keys are not even getting dislpayed while typing..
Is there any function to to disable the backspcae when only prompt is available
in QTextEdit?
#define PROMPT "CmdLin>"
bool eventFilter(QObject *Obj, QEvent *event)
{
static int count;
int promt_len = strlen(PROMPT);
if(event->type() == QEvent::KeyPress){
QKeyEvent *kevent = static_cast<QKeyEvent*>(event);
QString tmp_str= m_pcmdWin->toPlainText();
qDebug()<<"len"<<m_pcmdWin->toPlainText().length();
//if( promt_len== 7 && kevent->key()==Qt::Key_Backspace )
//if( kevent->key()==Qt::Key_Backspace )
if(tmp_str.cmp(PROMPT) && kevent->key()==Qt::Key_Backspace )
{
qDebug()<<"backspcae pressed";
//return QObject::eventFilter(Obj,event);
return 0;
}
else if (kevent->key()==Qt::Key_Return||kevent->key()==Qt::Key_Enter ) {
str = m_pcmdWin->toPlainText();
QStringList line = str.split(QRegExp("\n"));
QString str2=line[count];
count++;
QByteArray bbyteArray = str2.toUtf8();
const char *st=str2.toUtf8().constData();
read(st);
}
else{
kevent->accept();
str = m_pcmdWin->toPlainText();
}
}else {
return QObject::eventFilter(Obj,event);
}
}
QTextEdit if my QTextEdit has only prompt.
I tried in few ways, but eventFilter is not working as expected.
some times my keys are not even getting dislpayed while typing..
Is there any function to to disable the backspcae when only prompt is available
in QTextEdit?
#define PROMPT "CmdLin>"
bool eventFilter(QObject *Obj, QEvent *event)
{
static int count;
int promt_len = strlen(PROMPT);
if(event->type() == QEvent::KeyPress){
QKeyEvent *kevent = static_cast<QKeyEvent*>(event);
QString tmp_str= m_pcmdWin->toPlainText();
qDebug()<<"len"<<m_pcmdWin->toPlainText().length();
//if( promt_len== 7 && kevent->key()==Qt::Key_Backspace )
//if( kevent->key()==Qt::Key_Backspace )
if(tmp_str.cmp(PROMPT) && kevent->key()==Qt::Key_Backspace )
{
qDebug()<<"backspcae pressed";
//return QObject::eventFilter(Obj,event);
return 0;
}
else if (kevent->key()==Qt::Key_Return||kevent->key()==Qt::Key_Enter ) {
str = m_pcmdWin->toPlainText();
QStringList line = str.split(QRegExp("\n"));
QString str2=line[count];
count++;
QByteArray bbyteArray = str2.toUtf8();
const char *st=str2.toUtf8().constData();
read(st);
}
else{
kevent->accept();
str = m_pcmdWin->toPlainText();
}
}else {
return QObject::eventFilter(Obj,event);
}
}