• qt学习笔记


    Part 1基本思路

    学习目标:
    (熟练)使用 qt 制作符合要求的 ui

    FAQ:
    1)学习Qt5还是Qt4?
    重要的是学习的方法而不是内容,掌握了正确的学习方法就可以很快完成另一者的学习,综合来看,Qt4的资料较为全面,入门起来应该比较快。

    达成方式:
    学会使用 assistant 找到合适的 class 和 子函数 即可
    :先决条件:知道都有什么可用的 class 和 对应的子函数
    练习方式:实战(教材结合assistant)
    以熟悉 class 和 子函数 为主


    达标要求:
    完成 基础 部分
    中级 部分完成一半

    基本构建思路:
    1、使用 designer 完成基本界面的绘制
    2、添加继承类完成信号和槽的连接

    需要掌握的:
    1、添加中间层的一般方法
    2、常用的信号和槽

    Part 2 具体方法

    1、文件的划分
    1)一般对于一个功能使用两个文件,头文件存放声明,实现文件存放实现
    2)main 函数单独放一个文件

    2、没有什么功能是添加一个中间层解决不了的,如果有就再添加一个

    3、头文件的写法
    0)头文件本质上是充当了与外界接口的作用,其中想让外界访问(接入)的函数/变量使用 public, 否则使用 protected 和 private
    0.5)构造函数一般是public的, 同时默认 QWidget *parent = 0
    1)首先使用 #ifndef 来避免重复调用,后边的名字为头文件名(全大写,点号变为下划线)
    2)包含头文件时尽量不包含集成头文件,避免程序的运行变得臃肿
    3) 当使用系统自带的基本类框架时,一般声明一个自己的类,让他继承自该框架类
    4)在头文件中进行自建类的定义时也不对其成员进行定义,而是只声明
    5)为了能够对自建类进行调用,首先必须包含的就是构造函数(不定义,只声明)
    6)其次是这个类需要用的的信号和槽
    7)最后是涉及到的函数和变量

    4、实现文件的写法
    0)实现文件的主要功能是完善头文件中所提出的功能,因此第一件事就是完善头文件中未定义的自建类
    1)在出现显示字符串的位置加上 tr() 以提供翻译功能
    2)在出现文本的地方使用 “&+字母” 来设置该部件的快捷键
    3)标签本身不提供功能,但可以为其他没有文字的部件设置快捷键(需要使用“设置伙伴”功能)
    4)要想使用其他cpp文件提供的功能,必须包含与之对应的头文件

    5、designer的用法
    0)用designer生成的是一个头文件,需要写出对应的接口(一套头文件和实现文件)以丰富其功能并接入其他文件中去
    1)创建的常见顺序:
    1)创建子窗口部件
    2) 布局
    3)设置Tab键顺序
    4)连接信号与槽
    5)实现自定义槽
    2)要注意修改部件的名称以方便随后加入自定义槽(可以只修改后续要调用的)

    6、主窗口的创建
    1)主窗口与对话框的不同:
    1)声明和定义构造函数时不传入父窗口(因为是主窗口了, 肯定没有父窗口)
    2)mainwindow.h的结构:
    1)public: 构造函数
    2)protected: closeEvent()
    3)private:
    1)slots:要实现的功能
    2)普通函数:生成窗口过程中要用到的函数
    3)字段:mainwindow中用到的变量
    3)mainwindow.cpp
    1)类定义
    1)设置主窗口
    2)创建动作
    3)创建菜单
    4)创建上下文菜单
    5)创建工具栏
    6)创建状态栏
    7)设置图标
    8)其他功能
    4)使用图片
    要使用图片需要创建对应的资源文件(.qrc),并在工程文件(.pro)中加上一行 : RESOURCES = ****.qrc
    5)使用内置的提示框
    int r = QMessageBox::type(parent, title, message, buttons)
    //type 可选 warning, information, question, critical, 决定了弹出对话框的图案
    //parent 为父窗口
    //tile, message 分别为标题和显示的信息
    //buttons 为窗口中提供的默认按钮, 有 QMessage::Yes, QMessage::No, QMessage::Cancel ......
    // 显示多个按钮用 | 分割
    6)使用内置的文件对话框
    QString filename = QFileDialog::getOpenFileName(parent, title, folder, filter);
    //parent 为父窗口
    //title 为标题
    //folder 为开始寻找的目录
    //filter 为文件过滤器,格式为 “说明 + (通配符)”, 如有多个则用 分割
    //例如: "Spreadsheet files (*.sp) Comma-separated values files (*.csv)"
    7)去除文件名中的路径:
    QString name = QFileInfo(fullFileName).fileName();
    8) 对话框的调用
    1)非模态(可以挂在后台的)
    dailog = new myDialog(this); //实例化
    connect(......); //建立连接
    dialog->show(); //显示窗口
    dialog->raise(); //挂在顶层
    dialog->activateWindow(); //激活窗口
    2)模态(用完后就关闭,并且不允许切换至同应用的其他窗口)
    myDialog dialog(this); //实例化
    if(dialog.exec()){ //运行(显示窗口)
    connect(......); //建立连接
    }
    delete dialog; //释放内存

  • 相关阅读:
    【python-leetcode295-双堆】数据流的中位数
    python数组二分查找算法bisect
    python堆队列算法heapq
    python中的容器序列类型collections
    step(iter)、epoch、batch size之间的关系
    【python-leetcode437-树的深度遍历】路径总和Ⅲ
    Java 代码实现POST/GET请求
    .NET 按格式导出txt
    java fastjson解析json字符串
    Java 对象转XML xStream 别名的使用 附下载方式
  • 原文地址:https://www.cnblogs.com/moonfair/p/10758482.html
Copyright © 2020-2023  润新知