zoukankan      html  css  js  c++  java
  • Qt

    嵌入式: 偏应用,即偏某一应用或者作用开发,省去其他的的硬件。

    实验箱上面或者淘宝很多已经有了操作系统。

    或者根据网址进入镜像放置系统。并且实训也会操作,

     

     

     

     

    前期准备

    安装虚拟机 ubuntuVM中,配置虚拟机的配置,网络,网络本机互连是注意不仅ip相等,还有子网掩码等一致。

    下载QTputty等软件,QT还有一系列的执行,qmake等,

    ubuntuifconfig -a

    本地pc实是ipconfig

     

     

    密码为123456123

    ping的到本地pc,说明网络成功,

    配置虚拟机即ubuntu好了之后才是和板子互连,写程序等

     

    传文件

     

     

    才是成功,如果不成功

    1线问题

    2传输的文件问题,比如直接传了一个exe文件,或者代码错误

    3网络没配好

     

    成功之后就是给权限,运行,

     

     

     

     

    !QT creater

    选基类  

    .QMainWindow

    QMainWindow类提供一个带有菜单条,工具条和一个状态条的主应用程序窗口。主窗口通常提供一个大的中央窗口部件,以及周围菜单,工具条,和一个状态栏。QMainWindow窗口经常被继承,使得封装中央部件,菜单,工具条,状态栏等都变得很容易,当用户点击它的时候,相应的槽就会被调用。

    .QWidget

    QWidet类是所有用户界面对象的基类,窗口部件是用户界面的一个基本单元,它从窗口系统接收鼠标,键盘和其他消息,并在屏幕上绘制自己。一个窗口部件可以被他的父窗口或者是其他窗口挡住一部分。

    .QDialog

    QDialog类是对话框窗口的基类,对话框窗口主要用于短期任务和用户进行短期通讯的顶级窗口,QDialog可以是模态对话框或者是非模态对话框。QDialog支持扩展并带有返回值,他们可以带有默认值

    项目管理

     

    项目注释

    Exec()=下面的while(1)

     

     

     

    常见的快捷键

     

    #ifndef #define 下面的#endif 防止头文件重新编译

     

    !!Q_OBJECT

     

    构造函数 和析构函数  参考

    https://www.cnblogs.com/area-h-p/p/10316963.html

     

    这里  myWidget这个类

    双冒号(::)用法

    1.表示域操作符

    例:声明了一个类A,类A里声明了一个成员函数void f(),但没有在类的声明里给出f的定义,那么在类外定义f时, 

    就要写成void A::f(),表示这个f()函数是类A的成员函数。

    2.直接用在全局函数前,表示是全局函数 

    例:在VC里,你可以在调用API 函数里,在API函数名前加::

    3.表示引用成员函数及变量,作用域成员运算符

    例:System::Math::Sqrt() 相当于System.Math.Sqrt()

    4.命名空间作用域符,即2直接用在全局函数前,表示是全局函数 

    #include <iostream>

    int main ()
    {
    std::cout << "hello, world!" << std::endl;
    }

     

    而双::后的:如上图为

    类构造函数(Constructor)的初始化列表

    在构造函数后面紧跟着冒号加初始化列表,各初始化变量之间以逗号(,)隔开。下面举个例子。

    class myClass

    {

    public :

      myClass();// 构造函数,无返回类型,可以有参数列表,这里省去

      ~myClass();// 析构函数

      int a;

      const int b;

    }

    myClass::myClass():a(1),b(1)// 初始化列表

    {

    }

    上面的例子展示了冒号的这个用法,下面对这个用法进行几点说明:

    1)初始化列表的作用相当于在构造函数内进行相应成员变量的赋值,但两者是有差别的。

            在初始化列表中是对变量进行初始化,而在构造函数内是进行赋值操作。两都的差别在对于像const类型数据的操作上表现得尤为明显。我们知道,const类型的变量必须在定义时进行初始化,而不能对const型的变量进行赋值,因此const类型的成员变量只能(而且必须)在初始化列表中进行初始化,即下面的代码将会出错:

    myClass::myClass()

    {

      a = 1;// 没错,效果相当于在初始化列表中进行初始化

      b = 1;// 出错,const变量不能进行赋值操作;

    }

    2)初始化的顺序与成员变量声名的顺序相同。

    先看一下下面的程序:

    myClass::myClass():b(1),a(b)

    {

    }

            这样的执行结果a,b各是多少呢?b=1,a=1?不是,b=1而a是个随机数。这一点是相当重要的哦,一般在初始化列表中进行初始化时,初始化的顺序应与声明的顺序保持一致,防止出现不必要的错误。

    3)对于继承的类来说,在初始化列表中也可以进行基类的初始化,初始化的顺序是先基类初始化,然后再根据该类自己的变量的声明顺序进行初始化 

     

    F1帮助文档或者旁边的?

     QT中的对象树

     

    QT有自动回收内存机制 当点击x的一刻

    所以不用free这些new 的对象

    重要的是必须在树上面,如setParent(this)即将按钮放在了Qwidget下面的myWidget下面了形成了一系列树节点,所以他的析构函数也被自动结束调用了  看下面的调式框就是界面x的一刻。

     

    信号signal和槽slots机制

     

    详细见创建的项目

    匿名函数qt5.4一下版本需要在.pro文件中添加

     

    而匿名函数格式为[](){}

    当然这只是声明,要实现还要再加一个()[](){}()

     

    第一个[]为函数对象参数

     

    如这样

     

    就提示btn没有声明

    第二个()

     

    第三个函数体

     

     

    可以看到这个m是要修改的。必须在函数体前加上mutable才能修改

    返回值如下

     

    而这个匿名函数

     

    如这时用&就会错 就是错的上图

    而这个才对

     

    匿名函数里面调用函数更加方便

     

    QmainWindow

    菜单栏

                                               

    添加分割线

     

    工具栏

    导入#include<QToolBar>

     

    不过默认的工具栏在上侧

    这时候参考addToolBar的参数发现是有一个toolBarArea area的参数

     

     

     

    点击文档找到参数

    进入左侧

     

    状态栏

     

    对话框

     

    选择资源文件

    第一种

     

    第二种

     

     

     

    uI界面的信号和槽

     

     使用自定义封装

    比如封装一个spinBoxslider

     

    在主界面先加一个Wiget

    然后右键

     

    添加写封装类

     

  • 相关阅读:
    【工利其器】必会工具之(三)systrace篇(1)官网翻译
    【工利其器】必会工具之(三)systrace篇(2)
    【朝花夕拾】Android安全之(一)权限篇
    【工利其器】必会工具之(二)Android开发者官网篇
    【朝花夕拾】四大组件之(二)Service篇
    【朝花夕拾】四大组件之(一)Broadcast篇
    【朝花夕拾】Android性能篇之(七)Android跨进程通信篇
    【朝花夕拾】Android性能篇之(八)ANR篇--草稿
    Visual Studio容器项目工程化心得
    你需要掌握的有关.NET DateTime类型的知识点和坑位 都在这里
  • 原文地址:https://www.cnblogs.com/yangj-Blog/p/14221800.html
Copyright © 2011-2022 走看看