文章目录

  • qt项目创建
  • 为什么要学习Qt?
  • 学习QT应该学习什么?
  • 快捷键
  • Qt类的命名规范:
  • 函数名字:
  • Qt内置的类型,头文件和类命名同名
  • Qt中的对象树![请添加图片描述]
  • .pro文件中,各字符表示的意思


qt项目创建

1.创建路径不能有中文。

qt开发工具:qtcreator

优势:
1.跨平台,几乎支持所有的平台。(一次编码,随处编译)
2.接口简单,容易上手
3.开发效率高,能够快速构建应用程序。
4.很好的社区氛围,市场份额逐年上升。
5.可以进行嵌入式开发。

qt的成功案例:
1.linux桌面环境
2.wps office
3.skype 聊天软件
4.谷歌地球
5.VLC多媒体播放器

mft是windows开发
qt分装了window的API

为什么要学习Qt?

1.锻炼编程能力,GUI编程比后台更能锻炼人,除了核心数据处理,需要更好的协调界面,同时懂得前端和后台编程,才能写出更好的程序。
2.为了更好的使用C++,很多游戏,后台服务器都是使用c++实现的,学习QT框架能够为以后的工作打下一个良好的基础。
总结:学习Qt是为了更好的使用C++。而且可以拓展个人能力。

学习QT应该学习什么?

1.学会帮助文档的使用。F1
2.掌握qt中常用的类,以及其使用方法。(按钮类,标签类,编辑框类)
记住类的名字就好了,不需要记住方法。知道类是要干嘛的就行了。

快捷键

1.帮助文档:F1
2…h文件和对应的.cpp文件切换时 :F4
3.编译运行:ctrl + R ,只是编译 ctrl+B
4.函数声明和定义切换:F2
5.查找替换关键字:ctrl+f
6.注释ctrl + /

Qt类的命名规范:

单词的首字母必须时大写,单词和单词之间直接连接,无需连接符
如:MyClass,QpushButton
class MainWindow
{
};

函数名字:

变量名:第二个单词开始(不是第一个单词开始),首字母大写,单词和单词之间直接连接,无需连接符。
如:
void setFlag();
QString getText();
bool isDrow();

Qt内置的类型,头文件和类命名同名

每一个类,对应一个头文件。
#include 字符串类
QString str;

#include
QWidget w;

创建一个简单的窗口

版本控制工具 git svn vss

QWidget: 所有窗口类的父类。

QDialog :顶层窗口(第一个打开的窗口,对话框窗口) ,只有一个关闭按钮。

QMainWindow:菜单栏,工具栏。

qt on android开发环境搭建 qt开发安卓效率怎么样_开发语言

#include "mywidget.h"   //添加的窗口类,
                            //在qt中类名和头文件名相同
#include <QApplication>     //应用程序类:比如创建好的窗口的拖动,放大缩小等

int main(int argc, char *argv[])
{
    //应用程序类,在每一个qt程序中有且仅有一个
    QApplication a(argc, argv);
    //窗口类,创建出来之后默认不显示
    myWidget w;  //如果要对 窗口操作,就必须对 w进行操作
    //显示窗口
    w.show();
            //走到后台进行了一个消息(里面就是一个死循环,收到某一个信号就会结束,结束对窗口的监听)
    return a.exec();
}

1.首先需要一个应用程序类

2.需要一个窗口类

myWidget w; //如果要对 窗口操作,就必须对 w进行操作

qt on android开发环境搭建 qt开发安卓效率怎么样_qt on android开发环境搭建_02

qt on android开发环境搭建 qt开发安卓效率怎么样_Qt_03


QPushButton(QWidget *parent = 0) //指定一个父窗口

QPushButton(const QString &text,QWidget *parent = 0) //还可以设置按钮显示内容

QPushButton(const QString &text,QWidget *parent = 0) //还可以给按钮加上图片

qt on android开发环境搭建 qt开发安卓效率怎么样_qt on android开发环境搭建_04

  • b2 = new QPushButton(“hello,qt”,this); //必须指定父对象,才可以显示再父窗口类中,b2不用回收,由系统自动回收

    Qwidget Class 继承自Object类
    定时器也是Object的派生类,不属于窗口类

Qt中的对象树

qt on android开发环境搭建 qt开发安卓效率怎么样_qt on android开发环境搭建_05

当父对象要析构的时候,所有的子对象都已经被析构掉了

.pro文件中,各字符表示的意思

qt on android开发环境搭建 qt开发安卓效率怎么样_qt on android开发环境搭建_06


qt on android开发环境搭建 qt开发安卓效率怎么样_Qt_07


遇到的问题1:undefined reference to `vtable for MyButton’

处理方法就是重新qmake一下,也可以修改pro文件进而引发重新生成Makefile。

myWidget::myWidget(QWidget *parent)
    : QWidget(parent)
{

      //初始化
    /*
     * 如果窗口要依赖于一个窗口,需要给该窗口指定一个父类
     * 父窗口显示的时候,子窗口也会随之显示
     */
    b2 = new QPushButton("hello,qt",this);  //b2不用回收
    b2->setText("姓名");
    b2->show();   //窗口类创建出来的时候是默认不显示的
    b2->resize(200,80);
    //还可以
    b1.setParent(this);
    b1.setText("年龄");
    //修改按钮的位置 --移动
    //窗口的坐标系 ,原点在左上角,X轴向右递增,y向下递增
    b1.move(200,0);//窗口也会跟着增大
     //如何指定创阔的大小
    b1.resize(200,80);

    //内存自动回收
    //1.从Object派生的类,1.直接 2.间接
    //1.指定父类,父亲析构的时候,先析构其孩子

    //创建自定义的按钮对象,首先需要包含头文件
    MyButton *btn  =  new MyButton(this); //提供的构造函数只有一个参数
    btn->setText("性别");
    btn->resize(200,80);
    btn->move(400,0);
    
    //设置窗口的标题
    this->setWindowTitle("史倩钰是猪猪");
    this->resize(1000,800);
    //使得窗口的大小不能变化
    this->setFixedSize(1000,800);
    //自定义窗口图标
  //  this->setWindowIcon("/home/stu/qtproject/beauty.jpg");
}