C++及QT5.12.6学习日记第一周(3.1-3.7)

目录

第一天3.1 星期三

第二天3.2 星期四

第三天3.3 星期五

第四天3.4 星期六

第五天3.5 星期日

第六天3.6 星期一

第七天3.7  星期二

本周总结:


第一天3.1 星期三

软件安装与环境配置V

C++常用编译器有:DevC++、VC++6.0、Visual Studio等 

安装Visual Studio2017、Qt5.12.6、QGIS3.22.16(以备以后GIS开发时使用)

遇到的问题与经验:

1.在Visual Studio2017中无法打开某一个库C++及QT5.12.6学习日记第一周(3.1-3.7)_第1张图片

 2.在Qtcreater中无法打开某一个库,添加系统环境变量

C++及QT5.12.6学习日记第一周(3.1-3.7)_第2张图片

 3.文件中可能会缺少Windows Kits下的库,它在安装VS时会同步安装,注意它可能不在C盘,其他盘也要多找找;倘若都没有,可使用Visual Studio Installer重新进行安装,或用独立安装包进行安装

C++及QT5.12.6学习日记第一周(3.1-3.7)_第3张图片

4.功能测试宏的问题

C++及QT5.12.6学习日记第一周(3.1-3.7)_第4张图片 5. qt的安装:注意组件的选择

跳过登录界面可以断网   

第二天3.2 星期四

今日完成了所有环境的配置和安装,并了解了一些简单的变形监测软件的模式;同时也询问老师得知了在C++环境下的GIS开发将使用QGIS模式,目前可知的GIS开发模式如下(有待补充):

1.传统AE开发:Arcgis+Arcgis engine+VS

2.宏开发模式:Arcgis+VB/Python(内置)

3.Python开发模式:arcpy+pyqt+pycharm

4.WebGIs开发模式:

        1)接口调用:html5+css3+js+ ArcGIS API for JavaScript(或其他api) + Arccatolog

                                +vue/react/angular   +  ARCGIS server(或其他服务器)

        2)开源模式:openlayers/leaflet + (layui) + geoserver + postGIS

        3)补充:Dojo ,  Layui,  node.Js+express,  postgreSQL,   cesium等等

5.QGIS模式:qgis + qt + vs + mysql/sqlite

遇到的问题:

1.如遇到中文无法显示的问题,可进行修改编码,修改编码可用记事本打开另存为/记事本保存+命令行/使用utf8插件

C++及QT5.12.6学习日记第一周(3.1-3.7)_第5张图片

2. 无法打开Ui文件,右键选择打开方式,添加一个新的打开方式designer

a42a62d6b28f4ab5b193796226726338.png

3. 在Qt项目创建前/创建过程中可进行添加模块,若不添加也可以include库,但需要在前面加上文件夹名

C++及QT5.12.6学习日记第一周(3.1-3.7)_第6张图片

ed10b7ab276b4d898fd27fe73fedbd3f.png

4.QT中报错:添加环境变量到配置选项卡中;设置全英文路径;

5.QT中感叹号kits:配置debuugers   

C++及QT5.12.6学习日记第一周(3.1-3.7)_第7张图片

6.qt中在工具图表中的环境变量中配置include和lib,其内容包括但不限于:

C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\shared;C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\winrt;C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\Include\um;

C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\Lib\um\x64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.17763.0\ucrt_enclave\x64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.17763.0\ucrt\x64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.17763.0\um\x64;

E:\sofeware\qt5\5.12.6\msvc2017_64\lib

E:\sofeware\qt5\5.12.6\msvc2017_64\include

第三天3.3 星期五

今天重新安装了qgis,深刻学习了变形监测软件的使用,同时学习了QT的基础操作

遇到的问题:

1.在VS中对qgis的配置

(1)配置环境

C++及QT5.12.6学习日记第一周(3.1-3.7)_第8张图片

PATH=E:\sofeware\QGIS 3.22.16\bin;E:\sofeware\QGIS 3.22.16\apps\qgis-ltr\bin;E:\sofeware\QGIS 3.22.16\apps\Qt5\bin

$(LocalDebuggerEnvironment)

(2)链接器

C++及QT5.12.6学习日记第一周(3.1-3.7)_第9张图片

qgis_core.lib

qgis_app.lib

qgis_gui.lib

Qt5Core.lib

Qt5Gui.lib

Qt5Widgets.lib

(3)预处理器

_USE_MATH_DEFINES

C++及QT5.12.6学习日记第一周(3.1-3.7)_第10张图片

(4)包含目录和库目录

C++及QT5.12.6学习日记第一周(3.1-3.7)_第11张图片

C++及QT5.12.6学习日记第一周(3.1-3.7)_第12张图片

E:\sofeware\QGIS 3.22.16\apps\qgis-ltr-dev\include

E:\sofeware\QGIS 3.22.16\apps\Qt5\include

E:\sofeware\QGIS 3.22.16\apps\Qt5\include\QtWidgets

E:\sofeware\QGIS 3.22.16\apps\Qt5\include\QtGui

E:\sofeware\QGIS 3.22.16\apps\Qt5\include\QtCore

E:\sofeware\QGIS 3.22.16\apps\Qt5\include\QtXml

E:\sofeware\QGIS 3.22.16\apps\Qt5\lib

E:\sofeware\QGIS 3.22.16\apps\qgis-ltr-dev\lib

2.QT安装后环境变量的配置

qt安装后环境变量的配置:

378e631d81764c25a8ed718d72580371.png

eba612733cd3493da6bf8fa7d68d2f4d.png

path中添加:

C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x64

C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\arm64 

3.重点:缺少文件,使用VS一定要修改SDK版本

C++及QT5.12.6学习日记第一周(3.1-3.7)_第13张图片

4.报错无法打开文件…   一般需要引库

5.报错unrecognized token  一般是含有中文字符

第四天3.4 星期六

今天跟老师谈论了开发软件的问题,同时也成功注册了chatGPT,完成了页面的简单设计

遇到的问题:

1.一般来说,返回值为0代表函数正常运行,为非0代表函数异常

2.qt的转到槽函数:可直接编写控件;对于转不到槽的可进行连接  ,在create中有转到槽

3.pro可用create打开,用VS转化后的要手动添加各个需要使用的模块

4.中文前加u8可转化为utf-8

5.转到槽构建click槽函数

6.添加图片:改变样式表-添加资源

7.没有layout属性--选择栅格化控件

8.QWidget#centralwidget{background-color:#001871;};  为边界添加颜色

9.常看API进行编程,*parent即为调用自己

10.ui设计时,出现的默认的文字无法删除的可能是头,在ui界面的属性中进行隐藏

#所谓的模块,就是一个文件夹,若不添加,会导致很多#include不能用
#加载模块   core核心模块    gui界面模块
QT       += core gui

#当Qt版本大于4     Qt5需要加上widgets模块
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

#配置 C++   让qt支持C++11的语法规则
CONFIG += c++11

#使用过时的函数会产生警告
# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

#使用过时的函数会产生报错
# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

#项目里面的源文件,以下三个都不能手动删除
SOURCES += \
    main.cpp \
    widget.cpp

#项目里的头文件
HEADERS += \
    widget.h

#项目里的ui文件
FORMS += \
    widget.ui

#后面的没有用,可删除
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin  #嵌入式平台
else: unix:!android: target.path = /opt/$${TARGET}/bin #uinx平台
!isEmpty(target.path): INSTALLS += target

头文件wiget.h

#ifndef WIDGET_H
#define WIDGET_H

#include 

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget   //自己定义的类继承于系统的基类
{
    Q_OBJECT    //使用信号与槽必须包含的一个宏

public:
    Widget(QWidget *parent = nullptr); //构造函数,有一个空指针
    ~Widget();//析构函数

private:
    Ui::Widget *ui;     //命名空间UI下的Widget类定义指针ui
};
#endif // WIDGET_H

main.cpp

#include "widget.h"         //包含我们自己写的类的头文件

#include      //应用程序类

int main(int argc, char *argv[])//main函数,有且只能有一个
{
    QApplication a(argc, argv);//创建一个应用程序类,必须要有,且只能有一个
    Widget w;               //创建窗口对象
    w.show();               //手动显示窗口

    //while(1);
    return a.exec();       //应用程序消息循环,相当于while,消息处理,消息监听
}


/* ctrl+R 运行*/

wiget.cpp

#include "widget.h"     //包含自己的头文件
#include "ui_widget.h"  //界面的头文件

Widget::Widget(QWidget *parent)//构造函数
    : QWidget(parent)   //:为构造函数的初始化列表
    //给基类(父类)传一个对象parent
    , ui(new Ui::Widget)//把刚才的指针new过去
{
    ui->setupUi(this);//调用函数setupUi,并把自身设置进去
}

Widget::~Widget()//析构函数
{
    delete ui;
}

第五天3.5 星期日

今天第一次使用数据库和代码程序进行编程:
        1.SQL语句的基本规范,可先在notepad++中格式化编写,然后再导入到数据库软件中

        2.编程开发学习的基本方法

                1)看例子

                2)查百度

                3)查帮助文档/API

        3.灵活使用帮助文档,以qt5为例

        C++及QT5.12.6学习日记第一周(3.1-3.7)_第14张图片

 遇到的问题:

11.指针定义的时候带*,用的时候不用带*

12.数据库的构建,用命令行输入代码即可构建库

13.活用模板,看布局,看逻辑

14.undefined reference to `__imp__ZN12QSqlDatabase7driversEv‘,在pro文件中添加qt+=sql

15.variable has incomplete type 'QSqlQuery'    --没有导入头文件

16.注意同一个方法的不同参数定义,多看API

17.头文件里声明,源文件里定义

18.qDebug()<<可以在程序执行时的控制栏中打印true和false

19.使用#if 0  #endif 将这段代码封上,以备以后使用

20.sql.exec意为在数据库中执行该SQL语句,是数据库编程中的常用函数

第六天3.6 星期一

今天重新安装了qt6版本,qt的新版本均使用在线安装的方式,这样可以方便管理多个QT版本,并且可随时更新安装;

主要是完成基本功能的构建,得知了框架的搭建过程:

1.先声明再定义

2.注意返回值类型

3.SQL语句写的时候要仔细

遇到的问题:

21.%1  %2这些为数据库中信息,占位符

22.函数如果用void定义,则会报错没有返回值,那么就加上返回值(改函数类型修改为bool)

23.写SQL语句时的各个属性间一定要加,studentid=%5,phone='%6',

24.注意数据库添加时空格的问题,最好不要有空格,空格也会被数据库记录为字符

25.声明时函数前没有stuSql::,但定义时就有了,为系统自动生成

26.sql.next

27.auto

28.数据库中若是字符串一定要代' '

29..tar.xz为liunx系统中的压缩包文件

30.灵活运用给的找错函数和qDebug的结合,找出未发现的错误,如下所示

bool stuSql::updateUser(userInfo info)
{
    QSqlQuery sql(m_db);
    QString strsql = QString("update username set password='%1',auth='%2' where username='%3'").
            arg(info.password).
            arg(info.auth).
            arg(info.username);

    bool ret = sql.exec(strsql);
    QSqlError e = sql.lastError();
    if(e.isValid())
    {
        qDebug()<

第七天3.7  星期二

今天重点学习了css,并将程序的界面进一步优化

遇到的问题:

31.声明了变量就应该赶快定义,不然容易报错

32.注意要将css文件放在应用程序同级目录(Debug/relese)而不是工程文件目录
33.文件名称一定要带引号"   eg.  stuqss.css"
34.qtdesigner中的样式表优先级比外接css中的高
35.通过给一组控件加上通用的动态属性,方便对其样式表的添加
36.vscode注释:先按CTRL+K,再按CTRL+U
37.做UI设计时找一些好的开源ui库进行参考,如Flat UI,Element UI
38.QT Creator经常用着用着就未响应,原因是网易有道词典中滑动取词功能与QtCreator冲突
39.数据表中经常需要水平扩充,在QT designer中的属性后勾选√

 40.隐藏每一行数据前的数字

本周总结:

1.这一周是第一次写笔记多学的东西进行记录,多有不足之处

2.本周主要是包括qt、VS、qgis等软件的安装和配置,主要记录安装、配置过程中遇到的种种问题

3.学习了数据库的配置与链接以及样式表css的添加

4.初步学习了chatGPT等人工智能软件的使用

你可能感兴趣的:(学习日记,c++,学习)