2、用户点击一个窗口部件。
3、用户按下一个键盘快捷键。
4、用户使用鼠标滚轮。
5、用户移动焦点到一个窗口,并且应用程序必须决定窗口中的哪个窗口部件应该得到焦点。
把所有不想聚焦的控件,都设置上setFocusPolicy(Qt::NoFocus)另外,软键盘的制作,最好不用做画面的方式来做,或多或少都会有些问题的。最好的方式是用Qt做输入法程序,Qt源代码里面好象有个输入法例子。
两个lineEdit,判断焦点,按键无焦点,在设置linEdit有焦点setFocus才能有效;参考实例如下:
#include "widget.h"#include "ui_widget.h"
#include <QButtonGroup>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this)
QButtonGroup *m_buGroup = new QButtonGroup(this)//按钮组
ui->pushButton0->setFocusPolicy(Qt::NoFocus)//设置按钮无焦点
ui->pushButton0->setIconSize(QSize(55, 50))
m_buGroup->addButton(ui->pushButton0,1)//添加按钮到QButtonGroup
ui->lineEdit->setFocus()//设置焦点
QObject::connect(m_buGroup, SIGNAL(buttonClicked(int)),this, SLOT(buttonNumslot(int)))
}
void Widget::buttonNumslot(int bn)
{
if(ui->lineEdit->hasFocus())//输入框1焦点
{
ui->lineEdit->insert(QString::number(bn))
}
else if(ui->lineEdit_2->hasFocus())//输入框2焦点
{
ui->lineEdit_2->insert(QString::number(bn))
}
设置按钮无焦点,lineEdit才可以判断焦点。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)