我必须将焦点事件从某个QLineEditelement(ui->lineEdit)连接到方法focus().我怎样才能做到这一点?
Loh*_*run 27
当QLineEdit获得焦点时,没有信号发出.因此,将方法连接到焦点事件的概念并不恰当.
如果要获得focused信号,则必须派生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);
}
Run Code Online (Sandbox Code Playgroud)
在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));
}
Run Code Online (Sandbox Code Playgroud)
您现在可以将MyLineEdit::focussed()信号连接到您的focus()方法(插槽).
| 归档时间: |
|
| 查看次数: |
17563 次 |
| 最近记录: |