简体   繁体   English

如何编写一个子类QTextEdit以便在“ enter”按键上引起插槽调用?

[英]How to code a subclassed QTextEdit to cause a slot call on a “enter” key press?

How to code a subclassed QTextEdit to cause a "slot" call on a "enter" key press? 如何编写一个子类QTextEdit以便在“ enter”按键上引起“ slot”调用?

//mainwindow.cpp
myTextEdit *mytext = new myTextEdit(this);
mytext->setGeometry(QRect(QPoint(10,20), QSize(100,50)));
connect(mytext, SIGNAL(myReturn()), this, SLOT(handleText()));

    //subclassed QTextEdit
void myTextEdit::keyPressEvent(QKeyEvent *e)
{
    QString qstr = ::myTextEdit::toPlainText();

    if(e->key() == 16777220){ //enter key
        qstr = qstr + "\r\n>> ";
        //now cause an event like a QPushButton "released()" event to cause a "slot" call 
    }else{
        qstr = qstr + e->key();
    }
    ::myTextEdit::setText(qstr);
}

//header //标题

signals:
    void OnEnter;

void myTextEdit::keyPressEvent(QKeyEvent *e)
    {
        QString qstr = ::myTextEdit::toPlainText();

        if(e->key() == 16777220){ //enter key
            qstr = qstr + "\r\n>> ";
            //now cause an event like a QPushButton "released()" event to cause a "slot" call 
            emit OnEnter(); //creates the emit signal to call a slot
        }else{
            qstr = qstr + e->key();
        }
        ::myTextEdit::setText(qstr);
    }

setup slots like QPushButton 设置槽,例如QPushButton

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM