我要下载中国建设网站,怎么用域名做网站,wordpress google js,wordpress炫酷登录界面c qt–事件#xff08;第六部分#xff09;
一.编辑伙伴#xff0c;编辑顺序#xff08;按TAB进行切换#xff09;
1.编辑伙伴
此功能在设计界面如下的位置 1.设置伙伴关系 鼠标左键长按一个Label组件然后把鼠标移到另一个组件上
2.伙伴关系的作用
伙伴关系的作用就是…c qt–事件第六部分
一.编辑伙伴编辑顺序按TAB进行切换
1.编辑伙伴
此功能在设计界面如下的位置 1.设置伙伴关系 鼠标左键长按一个Label组件然后把鼠标移到另一个组件上
2.伙伴关系的作用
伙伴关系的作用就是可以设置快捷键通过快捷键直接定位到某个组件
3.添加快捷键 4.使用快捷键
ALT设置快捷键的字符
qt中上面的菜单栏也可以用alt相应的字符进行使用 2.编辑顺序
此功能在设计界面如下的位置 1.设置编辑顺序
直接用鼠标左键点排序的方块即可先点的顺序就靠前 3.进行切换
按TAB键即可进行编辑对象的切换按顺序切换
二.事件
1.什么是事件
事件是由系统或Qt本身在不同的时刻发出的。
事件是信号的前驱(事件驱动信号)
如果使用组件关心的是信号槽如果使用自定义组件关心的是事件
2.关于事件的第一个例子 监控鼠标状态用事件来进行监控
1.用到的组件如下 2.重写事件虚函数重写
1.创建一个文件用来重写事件虚函数重写 2.修改类
在创建的文件的头文件进行的修改 在创建的文件的源文件进行的修改 3.重写事件虚函数重写
在创建的文件的头文件的类中写下面代码
//声明
public:void mousePressEvent(QMouseEvent *ev) override;//override是判断是否重写了父类的虚函数注意qt中的虚函数的函数名是斜体的void mouseMoveEvent(QMouseEvent *ev) override;void mouseReleaseEvent(QMouseEvent *ev) override;在创建的文件的源文件中写下面代码
mylabel1::mylabel1(QWidget *parent) : QLabel(parent)//构造函数
{this-setMouseTracking(true);//鼠标默认不追踪这里设置鼠标默认追踪}//button 触发当前时间的按钮
//button 当前时间发生时哪些按键时按下的
//定义
void mylabel1::mousePressEvent(QMouseEvent *ev){if(ev-button()Qt::LeftButton){//如果是鼠标左键按下QString sQString(鼠标左键按下:%1,%2).arg(ev-x()/*获取横坐标*/).arg(ev-y()/*获取纵坐标*/);this-setText(s);}
}void mylabel1::mouseMoveEvent(QMouseEvent *ev){QString s;if(ev-buttons()(Qt::LeftButton|Qt::RightButton)){//鼠标左键和按键都按下了sQString(鼠标左右键:%1,%2).arg(ev-x()).arg(ev-y());//获取坐标}else if(ev-buttons()(Qt::NoButton)){//鼠标左键和右键都按下了sQString(没有按键:%1,%2).arg(ev-x()).arg(ev-y());//获取坐标}this-setText(s);
}void mylabel1::mouseReleaseEvent(QMouseEvent *ev){if(ev-button()Qt::RightButton){//鼠标右键 释放QString sQString(鼠标右键释放:%1,%2).arg(ev-x()).arg(ev-y());//获取坐标this-setText(s);}
}4.将子类与组件进行绑定 3.关于事件的第二个例子 输入电话号码 只能输入数字且只能是11位用事件来进行监控
1.用到的组件如下 2.重写事件虚函数重写
1.创建一个文件用来重写事件虚函数重写 2.修改类
在创建的文件的头文件进行的修改 在创建的文件的源文件进行的修改 3.重写事件虚函数重写
在创建的文件的头文件的类中写下面代码
//声明
public://事件 分发bool event(QEvent *) override;//事件处理器 event handlervoid keyPressEvent(QKeyEvent *) override;
在创建的文件的源文件中写下面代码
//定义
bool myLineEdit::event(QEvent * ev)
{if(ev-type()/*判断事件的类型*/QEvent::KeyPress){ //如果当前事件类型为键盘按下事件QKeyEvent* pKey(QKeyEvent*)ev;//强转为某个具体的事件int keypKey-key();//获取按下的那个按键if((Qt::Key_0keykeyQt::Key_9)||keyQt::Key_Backspace){//如果是数字则放行qDebug()event 放行 key;return QLineEdit::event(ev);//继续走分发}else{//拦截qDebug()event 拦截 key;if(keyQt::Key_Return){//Key_Return:字母区的回车, Key_Enter:数字小键盘的回车QMessageBox::information(this,电话号码,m_strTel);//弹出提示框显示输入的电话号码}//return true;//当前事件已经得到了处理不会继续分发了return false;//当前事件 当前的组件处理不了交由父窗口继续处理}}return QLineEdit::event(ev);//其他类型的事件继续走分发
}void myLineEdit::keyPressEvent(QKeyEvent * pKey)
{qDebug()keyPressEventpKey-key();if(pKey-key()Qt::Key_Backspace){//如果是backspace键//m_strTel是定义在类中的属性公有的属性m_strTel m_strTel.left(m_strTel.size()-1);//截取QString steltext();setText(stel.left(stel.size()-1));}else if(m_strTel.size()11){//对显示的电话号码中间四位进行加密处理m_strTelQString::number(pKey-key()-Qt::Key_0);if(m_strTel.size()3){setText(m_strTel);}else if(m_strTel.size()3m_strTel.size()7){QString sm_strTel.left(3);for(int i3;im_strTel.size();i){s*;}setText(s);}else{QString sm_strTel.left(3)****m_strTel.right(m_strTel.size()-7);setText(s);}}
}4.将子类与组件进行绑定