QT开发中文网

C++中Qtextedit点击回车,不再换行,而是相应另一个按钮

可以通过为QTextEdit添加一个事件过滤器来实现点击回车时相应另一个按钮的功能。

首先,在类的头文件中声明一个事件过滤器:

class MyClass : public QWidget
{
    Q_OBJECT

public:
    MyClass(QWidget *parent = nullptr);

private:
    QTextEdit *m_textEdit;
    QPushButton *m_button;

protected:
    bool eventFilter(QObject *obj, QEvent *event) override;
};

然后,在构造函数中为QTextEdit添加事件过滤器,并连接按钮的信号槽:

MyClass::MyClass(QWidget *parent)
    : QWidget(parent)
{
    m_textEdit = new QTextEdit(this);
    m_button = new QPushButton("Button", this);

    // 添加事件过滤器
    m_textEdit->installEventFilter(this);

    // 连接信号槽
    connect(m_button, &QPushButton::clicked, this, [](){
        qDebug() << "Button clicked!";
    });
}

最后,重载事件过滤器函数,在按下回车键时发送按钮的点击信号:

bool MyClass::eventFilter(QObject *obj, QEvent *event)
{
    if (obj == m_textEdit && event->type() == QEvent::KeyPress)
    {
        QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event);
        if (keyEvent->key() == Qt::Key_Return || keyEvent->key() == Qt::Key_Enter)
        {
            m_button->click();
            return true;
        }
    }

    return QWidget::eventFilter(obj, event);
}

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=1068

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?