作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我必须将焦点事件从某些 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/
我是一名优秀的程序员,十分优秀!