可以通过为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);
}