gpt4 book ai didi

c++ - 如何从 QLineEdit 连接焦点事件?

转载 作者:行者123 更新时间:2023-12-03 07:33:32 25 4
gpt4 key购买 nike

我必须将焦点事件从某些 QLineEdit 元素 (ui->lineEdit) 连接到方法 focus ()。我怎样才能做到这一点?

最佳答案

当 QLineEdit 获得焦点时,不会发出任何信号。因此将方法连接到焦点事件的概念并不直接合适。

如果您希望获得聚焦信号,则必须派生 QLineEdit 类。以下是如何实现这一目标的示例。

myLineEdit.h 文件中,您有:

class MyLineEdit : public QLineEdit
{
Q_OBJECT

public:
MyLineEdit(QWidget *parent = 0);
~MyLineEdit();

signals:
void focussed(bool hasFocus);

protected:
virtual void focusInEvent(QFocusEvent *e);
virtual void focusOutEvent(QFocusEvent *e);
};

myLineEdit.cpp 文件中,您有:

MyLineEdit::MyLineEdit(QWidget *parent)
: QLineEdit(parent)
{}

MyLineEdit::~MyLineEdit()
{}

void MyLineEdit::focusInEvent(QFocusEvent *e)
{
QLineEdit::focusInEvent(e);
emit(focussed(true));
}

void MyLineEdit::focusOutEvent(QFocusEvent *e)
{
QLineEdit::focusOutEvent(e);
emit(focussed(false));
}

您现在可以将 MyLineEdit::focussed() 信号连接到 focus() 方法(槽)。

关于c++ - 如何从 QLineEdit 连接焦点事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2804115/

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