gpt4 book ai didi

c++ - 如何通过按 Escape 键重置 QLineEdit 文本?

转载 作者:行者123 更新时间:2023-11-30 03:40:23 25 4
gpt4 key购买 nike

我正在做一个 Qt4 项目。我有一个 QLineEdit,我想重用我在 QLineEdit 中单击 Escape 键时看到的行为,但我不确定如何操作。

当我按下转义键时,我将字段重置为开始编辑之前的值。这对我很有用,我想要这种行为。

理想情况下,我想要一个可以触发 QLineEdit 重置为之前值的信号。我不想尝试伪造转义键事件。我可以缓存行编辑的旧值,但如果当我单击转义时行为已经存在,这似乎更有效。谢谢。

最佳答案

How can I make QLineEdit widget to respond on Escape key by setting the text programmatically?

QLineEdit 的子函数覆盖 QWidget::event 虚函数,或者更“本地”一些,比如安装事件过滤器:

    class MyLineEditEventFilter : public QObject
{
public:
explicit MyLineEditEventFilter(QLineEdit *parent) : QObject(parent)
{}

bool eventFilter(QObject *obj, QEvent *e)
{
switch (e->type())
{
case QEvent::KeyPress:
{
QKeyEvent *keyEvent = static_cast<QKeyEvent *>(e);
if (keyEvent->key() == Qt::Key_Escape)
{
// or set the other text from the variable
reinterpret_cast<QLineEdit *>(parent())->setText("Escape!");
}
break;
}
}
// standard event processing
return QObject::eventFilter(obj, e);
}
};

调用者是这样的:

m_pLineEditSearch = new QLineEdit;
auto* pLineEditEvtFilter = new MyLineEditEventFilter(m_pLineEditSearch);
m_pLineEditSearch->installEventFilter(pLineEditEvtFilter);

要在按下 Escape 时重置之前的文本,您可以使用不同的方法,但您需要以某种方式获取指向保存字符串的对象的指针。如果不查看您的代码,很难回答这个问题。

关于c++ - 如何通过按 Escape 键重置 QLineEdit 文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38065791/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com