记录自己的QT学习之路(9)
记录一下前几日的学习笔记(最近比赛的事情太忙啦)
-
虚函数virtual
C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。 -
QString的arg()函数
QString("[%1, %2]").arg(x, y);
QString的arg()函数可以自动替换掉QString中出现的占位符。其占位符以 % 开始,后面是占位符的位置,例如 %1,%2 这种 -
键盘事件
if (event->type() == QEvent::KeyPress) //键盘事件
{QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event); //使用Qt提供的QKeyEvent接口
if (keyEvent->key() == Qt::Key_Space) { //空格键
…
return true;
} -
迭代器的使用
for(auto it = s.begin(); it != s.end() && !isspace(*it); ++it)
*it = toupper(*it);//大写字母 -
使用迭代器访问对象成员
(*it).empty()
需要注意的是,(*it).empty()这个括号是必须的。 否则,点操作符直接作用于it。因此,*it.empty()是错误的。为了简化这种表示,语言定义了箭头操作符(->),它把解弓|用和成员访问组合为一个符号,即it->empty()。 -
keypress的用法
-
如果子类重新申明父类的属性,如Qpoint start.x(),那么在调用的时候
只会调出父类的属性。 -
几何的计算,判断一点是否在线段上
判断条件:
(1)(Q-P1)*(P1-P2)=0 //即三点共线。
(2)Q点的横纵坐标是否在P1和P2的横纵坐标范围之内。
int judge(){
if(((q.x-p1.x)*(p1.y-p2.y))==((p1.x-p2.x)*(q.y-p1.y))
&& (q.x>=min(p1.x,p2.x) && q.x<=max(p1.x,p2.x))
&& ((q.y>=min(p1.y,p2.y))&&(q.y<=max(p1.y,p2.y))))
return 1;
return 0;
}
-
属性的初始化可以直接在构造函数里写
如初始化了矩形的长和宽,那么需要在构造函数里写面积才能将面积属性初始化。 -
lineEdit接收到回车键信号则触发槽函数
connect(ui.lineEdit, SIGNAL(returnPressed()), this, SLOT(change()));
connect(ui.lineEdit, SIGNAL(editingFinished()), this, SLOT(change())); -
修改QPoint类的对象的x和y值
通过 setX()和setY函数进行设置 如start.setX(1) -
尚未解决的lineEdit的缓冲区的问题
lineEdit似乎有个缓冲区,比如我设置了点击图像则讲图像的属性输出至lineEdit但若有两个图像,我依次点击第一个和第二个图像,都能正常显示,如果第三次再次点击第一个图像,这是lineEdit不会change成图像一的属性。