QT中的Buddy主要应用在快捷键上。最常用的就是 QLabel 和 QLineEdit 两个控件上。
1. 通过Designer设置Buddy关系
如果名字为Name的 QLabel 设置的控件Name为 “&Name” ,那么该控件快捷键则为 “Alt + N”,如果我们在键盘上输入此快捷键,则输入焦点聚焦在名称为“Untitled image”的QLineEdit控件上。
例如上图中的Name组件的Buddy组件为Untitled Image。实现Buddy组件非常简单,就是选中 名称为“Name”的QLable,然后按住鼠标左键,一直拉到其Buddy组件上释放即可,设置中的效果如下:
删除Buddy关系,则选中上图中的箭头,点击右键在弹出的菜单中选择 “Delete” 即可。
2. 通过代码设置Buddy关系
设置对应Buddy控件使用setBuddy(buddy) ,如果取消Buddy关系则setBuddy(NULL) 即可。
[source lang=”cpp”]
// void QLabel::setBuddy ( QWidget * buddy)
QLineEdit *nameEd = new QLineEdit(this);
QLabel *nameLb = new QLabel("&Name:", this);
nameLb->setBuddy(nameEd);
QLineEdit *phoneEd = new QLineEdit(this);
QLabel *phoneLb = new QLabel("&Phone:", this);
phoneLb->setBuddy(phoneEd);
[/source]