这是我参与更文挑战的第7天,活动详情查看:更文挑战
作为C++期末项目,我这个学期提前开始一个月就准备了,可谁想到最后还是碰到了一个不讲理的老师,我想我的Qt项目在这个期末项目中可算可以了,相比于其他所有使用MFC做出来的各种系统。我甚至还帮一个同学做完了他的项目,帮他通过了答辩,最后的成绩似乎还比我好。。。崩溃~~,世事无常,我在打代码的时候也常常质问自己,自己是否真的适合这个行业,不要水波逐流。保持思考,保持冷静。
20/11/21 已经搭建出了最基本的框架,但并不是我的本意,现在建立的窗口不可以随意拉伸,之后要改掉,现在还自由两个显示列表,最后我希望是三个。 20/11/21 中午 在搞数据库,现在碰到的问题时,我不知道如何把输入数据库和具体的数据库联系到一起。 最开始的收集箱之类的任务类型好建立,只需要几个名字就可以了。那么问题在哪里?现在想一想,如果Master/Details数据表只需要名字对到了就可以的话,那我只需要把人物数据库的链接到就可以了。 现在设计一下任务数据表:taskID\taskTIme\优先级\id?
11/23 功亏一篑,重新设计 现在学习QT的绘图功能
#Include<Qpainter>:用于执行绘图操作
<QpaintDevice>:提供绘图设备,是一个二维空间的抽象
<QPaintEngine>:一些接口
protected:
void paintEvent(QpaintEvent *event);
void Widget:: : paintEvent(QPaintEvnet * event)
{
QPaint painter(this);
painter.drawLine(Qpoint(0,0),QPaint(100,100));
}
定一个小目标:9:30前把知识的吸收搞定,绘图、数据库
drawArc()圆弧
drawChord()弧
drawRect矩形
使用画笔
QPen pen(Qt::green,5,Qt::DotLine, Qt::RoundCap,Qt::RoundJoin);
painter.setPen(pen);
QRectF rectangle(70.0,40.0,80.0,60.0);
画笔用于定义绘制图形线条的各种属性
绘制文字
Qpainter::darwText()
QPaint::fontInfo()可以获取字体信息,他返回QFontInfo类对象。
默认抗锯齿
第一步在widget头文件中声明
protected:
void paintEvent(QpaintEvent * event);
在cpp文件中添加
#include<QPaint>
void Widget::paint Event(QPaintEvnet * event)
{
QPainter paint(this);
QRectF rect(10.0,10.0,380.0,280.0);
painter.setPen(Qt::red);
painter.drawRect(rect);
painter.setPen(Qt::blue);
painter.drawText(rect, Qt::QlignHcent | QT::AlignRight,tr("AlignHcent"));
上面drawText第一个参数指定了绘制文字所在的矩形
第二个参数:文字对齐的方式,可以制定不同的对齐方式(或者其他方式,比如制定换行等)
第三个参数:就是需要绘制的文字了。
如果绘制的文字和他的布局不需要经常改动,那么可以使用drawStaticText()函数,更加高效
!!!也就是说,drawtext函数可以绘制经常变动的文字和布局
painter.drawText(120,80,tr("yafeilinux"));
这是另外一种形式,可以用来指定实现的坐标
painter.translate(100,100);
painter.rotate(90);
painter.drawText(0,0,tr("hellloqt");
上面函数将坐标系系统平息并旋转,然后再次绘制了文字。
11/23号,完成阅读任务
QWidget widget; QHBoxLayout *pHBox = new QHBoxLayout(&widget); QSplitter *pSplitter = new QSplitter(Qt::Orientation::Vertical, &widget);//水平 pSplitter->setStyleSheet("QSplitter:handle{background-color:grey}");
QTextEdit *pEdit1 = new QTextEdit(&widget);
QTextEdit *pEdit2 = new QTextEdit(&widget);
pEdit1->setText("Top");
pEdit2->setText("Bottom");
pSplitter->addWidget(pEdit1);
pSplitter->addWidget(pEdit2);
pHBox->addWidget(pSplitter);
widget.show();
开发一个在电脑上就可以识别二维码的功能出来
调试及问题解决
在做课设写代码的过程中遇到很多问题, 很多时候我们遇到问题首先想到的是将错误复制下来,然后粘贴到google搜索框中,漫无目的的去寻找答案,而不是仔细分析查看编译器给出的错误提示。跟我的经验,很多时候编译器给出的提示相当明显,认真仔细阅读大部分可以很快找出解决方案。 我还经常引起LINK,这个时候回到文档,把原来生成的Debug’等自动生成的文件,重新编译一遍就能运行了,我猜是因为缓存问题。 面向对象编程。万物皆是对象,需要对各个对象的属性和行为进行分析,进行抽象,归纳和分析。说实话,在实际编程的时候还是无法直接想到面向对象的思想,而总是走向模块话的老路。后面在参照别人代码和看了一点编程编译设计后好了一点,但还不能很快改正。 不过说真的,我也的确需要补充些这方面的知识。当然第一次做c++项目肯定还是有很多考虑不周全的,基础知识太薄弱了以后继续努力!
结束语(包括感想、致谢、设计总结)
在本次的实训中,除了让我明白工作中需要能力,素质,知识之外,更重要的是学会了如何去完成一个任务,懂得了享受工作。当遇到问题,冷静,想办法一点一点的排除障碍,到最后获取成功,一种自信心由然而生,这就是工作的乐趣。有时候也需要虚心请教,从别人的身上真得能学习到不自己没有的东西,每一次的挫折只能使我更接近成功。除此以外,我还学会了如何更好地与别人沟通,如何更好地去陈述自己的观点,如何说服别人认同自己的观点。这次所学知识与实际的应用,理论与实际的相结合,让我大开眼界。也是对以前所学知识的一个初审吧!这次 实训对于我以后学习、找工作也真是受益菲浅,在短短的一个星期中让我初步从理性回到感性的重新认识,也让我初步的认识C++这门语言,对于以后前进所应把握的方向也有所启发!相信这些宝贵的经验会成为我今后成功的重要的基石。。 在这里,还要感谢刘老师的指导及同学们能和我一起讨论学习,共同进步,使我在学习过程中有了很大的提高,也提升了我对自己编程能力的自信。现在还只是初步学习了浅易的C++语言,未能体会c++程序设计中诸多更加强大的软件功能,所以c++的学习是没有结束的,在将来的大学生活乃至工作中,我还会更加勤奋努力,更好的学习运用这门计算机语言。