Qt基础知识-创建Qt程序,Qt Creater常用快捷键,创建组件,对象树

2023-11-11

1.简介

Qt是一个跨平台的图形引擎,1991年由奇趣科技开发。
优点:跨平台、接口简单易于上手、一定程度上简化了垃圾回收机制。

 2.创建Qt程序

 名称:不能有空格,不能有中文
 路径:不能有中文
 创建cpp文件时选择继承的3个类:Qwidget,QMainWindow,QDialog
 QWidget:空窗口
 QMainWindow:带有工具栏和状态栏,继承自QWedget
 QDialog:对话框(有选择按钮),继承自QWidget
 
 main函数

#include "mywidget.h"
#include <QApplication> //包含一个应用程序类的头文件

//main函数入口 argc 命令行变量的数量 argv命令行变量数组
int main(int argc, char *argv[])
{
    //应用程序对象,在Qt中,有且仅有一个
    QApplication a(argc, argv);
    //窗口对象 继承自Widget
    myWidget w;
    //显示窗口对象,默认不显示
    w.show();
    //让程序进入消息循环,让代码阻塞到这一行
    return a.exec();
}

.pro工程文件

QT       += core gui  //Qt中包含的模块

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets //大于4以上的版本包含widget模块

TARGET = qt_demo01 //目标,生成.exe程序的名称
TEMPLATE = app //应用程序模板 Application

DEFINES += QT_DEPRECATED_WARNINGS

CONFIG += c++11  //添加对C++ 11的支持

SOURCES += \
        main.cpp \        
        mywidget.cpp   //源文件

HEADERS += \
        mywidget.h     //头文件


3.Qt Creater常用快捷键:

注释:Ctrl + /
运行:Ctrl + r
编译:Ctrl + b
字体缩放: Ctrl + 鼠标滚轮
查找:Ctrl + f
整行移动:Ctrl + shift + ↑ 或 ↓
自动对齐:Ctrl + i
同名.cpp和.h文件之间切换 :Fn + F4

帮助文档 方式1:Fn + F1  方式2:左侧按钮  方式3:D:\Software\Qt5.12.0\5.12.0\mingw73_64\bin\assistant.exe

4.组件常用创建和常用函数

myWidget::myWidget(QWidget *parent)
    : QWidget(parent)  //调用父类构造函数
{
    //创建一个按钮
    QPushButton *btn = new QPushButton;
    //btn->show(); //以顶层方式弹出窗口控件
    //让btn依赖在myWidget窗口中
    btn->setParent(this); //this指当前窗口
    btn->setText("第一个按钮");

    //创建第二个按钮 ->默认按照控件大小创建窗口
    QPushButton *btn2 = new QPushButton("第二个按钮",this);

    //重置窗口大小
    this->resize(300,300);

    //重置按钮大小
    btn2->resize(80,50);

    //移动btn2按钮,以左上角为原点移动到(100,100)位置
    btn2->move(100,100);

    //设置窗口标题
    this->setWindowTitle("我的窗口");

    //设置固定窗口大小->窗口大小不可调整
    this->setFixedSize(600,400);
    
    //创建自定义按钮
    mypushbuttom *btn3 = new mypushbuttom;
    btn3->setText("自定义的按钮");
    btn3->move(150,150);
    //设置父亲,btn3被放进对象树,父类窗口关闭,子类从下往上自动被释放
    btn3->setParent(this);
}

5.对象树

在Qt中创建对象的时候会提供一个Parent对象指针,QObject是以对象树的形式组织起来的。当你创建一个QObject对象时,会看到QObject的构造函数接收一个QObject指针作为参数,这个参数就是parent,也就是父对象指针。这相当于,在创建QObject对象时,可以提供一个其父对象,我们创建的这个QObject对象会自动添加到其父对象的children()列表。当父对象析构的时候,这个列表中的所有对象也会被析构。这种机制在GUI程序设计中相当有用。例如,一个按钮有一个QShortcut(快捷键)对象作为其子对象。当我们删除按钮的时候,这个按钮对应的快捷键应被删除。

6.坐标系

左上角为(0,0),x以右为正方向,y以下为正方向。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt基础知识-创建Qt程序,Qt Creater常用快捷键,创建组件,对象树 的相关文章

  • PyQt5:如何使QThread返回数据到主线程

    I am a PyQt 5 4 1 1初学者 我的Python是3 4 3 这是我尝试遵循的many https mayaposch wordpress com 2011 11 01 how to really truly use qthr
  • Qt:在多个布局中使用一个小部件

    我有一个 QTabBar 所有选项卡都应该有相同的小部件 layout1 gt addWidget w layout2 gt addWidget w 然而打电话addWidget第二次导致该小部件在第一个布局中消失 有没有办法使用一个小部件
  • QT从QTableWidgetItem继承到Widget并覆盖'<'运算符

    我想要一个QTableWidget具有定制的某些单元QProgressBars 并且我希望能够对包含这些的列进行排序 我的定制QProgressBar继承自两者QProgressBar and QTableWidgetItem 并且我正在覆
  • Qt - 设置不可编辑的QComboBox的显示文本

    我想将 QComboBox 的文本设置为某些自定义文本 不在 QComboBox 的列表中 而不将此文本添加为 QComboBox 的项目 此行为可以在可编辑的 QComboBox 上实现QComboBox setEditText cons
  • 如何在 QtQuick 2 中对 QML TableView 进行排序?

    我想使用 Qt 5 1 实现具有自定义角色的可排序 TableView 但我不知道当用户单击标题时该怎么做才能对其进行排序 在我的 Qt pro 文件中 我添加了 android ios blackberry qtHaveModule wi
  • QSerialPort 中的 readAll() 不包括最后发送的响应

    我正在使用 Qt 来控制串行设备 如果我向串行设备发送命令 我会执行类似的操作serial gt write command r n 我制作了一个按钮 它将纯文本小部件内的文本更改为串行端口的响应 为了获得串口的响应 我使用serial g
  • Qt表格小部件,删除行的按钮

    我有一个 QTableWidget 对于所有行 我将一列的 setCellWidget 设置为按钮 我想将此按钮连接到删除该行的函数 我尝试了这段代码 它不起作用 因为如果我只是单击按钮 我不会将当前行设置为按钮的行 ui gt table
  • 如何为 Windows 构建静态 Qt 库并将其与 Qt Creator 一起使用

    我已经下载了以下 Qt 源 http download qt nokia com qt source qt everywhere opensource src 4 7 3 zip http download qt nokia com qt
  • Qt 安装程序框架 - 如何在卸载时仅删除某些文件和文件夹

    我使用 Qt 安装程序框架 如何确保在卸载时仅删除某些文件或文件夹 而不是像当前那样删除安装文件夹中的所有文件 先感谢您 您可以覆盖默认行为component createOperations对于卸载程序 然后使用手动指定每个卸载路径com
  • 将 QByteArray 从大端转换为小端

    我想我在这里有点不知所措 我尝试了这么简单的事情 我不敢相信没有任何内置的 Qt 使用 Qt 5 6 2 我尝试将 QByteArray 内的数据从大端转换为小端 总是从相同的测试 QByteArray 开始 就像这样 QByteArray
  • Qt中正确的线程方式

    我的图像加载非常耗时 图像很大 并且在加载时也完成了一些操作 我不想阻止应用程序 GUI 我的想法是在另一个线程中加载图像 发出图像已加载的信号 然后用该图像重绘视图 我的做法 void Window loadImage ImageLoad
  • 当从 html 文件读取 Unicode 内容时,为什么 Unicode 字体在 QTextBrowser 中无法正确显示?

    我正在读一本html文件 该文件基本上包含Unicode案文如下 b akko sati kru akkh ti khy abbahati b h b But the QText浏览器不解释Unicode字体 所以QText浏览器显示如下
  • 扩展 TabViewStyle styleData

    我目前正在尝试找到一种更好的方法来执行此操作 将图标添加到选项卡 现在 我正在放弃 styleData title 以包含图标源 但如果能够扩展 styleData 就更好了 这样我就可以包含其他自定义属性 这是我当前的黑客 Tab tit
  • 如何将枚举类传递给 QML?

    我正在学习QML with Qt并在通过时遇到一些麻烦enum class to qml 当我使用信号时int参数 一切正常 代码运行完美 But 麻烦就在这里 如果我使用信号与一些enum class我有参数undefinedqml 信号
  • wkhtmltopdf 修补了 qt 吗?

    我正在尝试将多个 URL 转换为 PDF 但是 当我编译 wkhtmltopdf 或运行时apt get install wkhtmltopdf并尝试一下 它说 错误 此版本的 wkhtmltopdf 是针对未修补的 QT 版本构建的 并且
  • 从 Qt 更改屏幕分辨率?

    我想更改屏幕分辨率 然后使用一个 ActiveX 控件 Flash 播放器 进入全屏 显然 仅适用于 Windows 的解决方案就可以了 有 Qt api 吗 还是我需要深入研究 winapi 如果是这样 我该在哪里查找 关键字 谢谢您的帮
  • 如何在Qt3D中优化点云渲染

    我正在尝试使用 Qt3D 显示大型点云 20M pts 我第一次发现这个图书馆https github com MASKOR Qt3DPointcloudRenderer https github com MASKOR Qt3DPointc
  • QT C++ QRegularExpression 多个匹配

    我想使用正则表达式从 QString html 中提取信息 我明确想使用正则表达式 无解析器解决方案 和类Q正则表达式 http qt project org doc qt 5 0 qtcore qregularexpression htm
  • 在 Windows 上以 QML 播放 RTSP 视频

    我正在尝试将 QML 中的 RTSP 流播放到视频标签中 如下所示 Repeater model 8 Video Layout fillWidth true Layout fillHeight true fillMode VideoOutp
  • 运行最新版本时没有“最新”消息?

    我正在尝试使用Sparkle https sparkle project org与 Qt Go 的绑定 https github com therecipe qt app 闪光 m import

随机推荐

  • 手势识别Python-OpenCV

    目录 一 选题背景 5 二 设计理念 5 2 1 搭建平台 5 2 2 问题描述 5 2 3 过程概述 6 三 过程论述 6 3 1 数据集生成 6 3 1 1 标准化图片的采集 6 3 1 2肤色检测 7 3 1 3 特征提取 8 3 1
  • Linux系统基础命令

    Linux系统常用基本命令 ls 查看当前目录下所有文件 注 蓝色 文件夹 白色 普通文件 绿色 拥有执行权限的文件 红色 压缩文件 touch 示例 touch filename txt 在当前目录下创建一个文件 注 文件名区分大小写 文
  • 【LeetCode】83. 删除排序链表中的重复元素

    83 删除排序链表中的重复元素 简单 方法 一次遍历 思路 由于给定的链表是排好序的 因此重复的元素在链表中出现的位置是连续的 因此我们只需要对链表进行一次遍历 就可以删除重复的元素 从指针 cur 指向链表的头节点 随后开始对链表进行遍历
  • 【时间序列数据挖掘】ARIMA模型

    目录 0 前言 一 移动平均模型MA 二 自回归模型AR 三 自回归移动平均模型ARMA 四 自回归移动平均模型ARIMA 总结 0 前言 传统时间序列分析模型 ARIMA模型是一个非常灵活的模型 对于时间序列的好多特征都能够进行描述 比如
  • MYSQL数据库测评及整改

    1 查询数据库版本 select version 2 查询已安装的插件 show plugins 3 查询插件安装的位置 show variables like plugin dir 4 查询用户 选择数据库 select host use
  • 阿里云OCR图片识别

    阿里云OCR图片识别 请求参数 Body 请求示例 java 正常返回示例 错误码定义 阿里云OCR图片识别 单字识别 表格识别 旋转功能 准备条件 阿里云OCR图片识别API购买 初次购买1分钱500次接口调用 请求参数 Body 图像数
  • Java多线程——为什么弃用stop、suspend、resume方法

    初始的Java版本定义了一个stop方法用来终止一个线程 以及一个suspend方法用来阻塞一个线程直至另一个线程调用resume stop和suspend方法有一些共同点 都试图控制一个给定线程的行为 stop suspend和resum
  • 利用Python写Api

    初学者 仅作笔记参考 因为没使用web框架 采用的原生sql进行数据查询有点呆板 from mysql Database import Demo from utils tools import Tools import flask json
  • 运行快捷指令_iOS 13 快捷指令无法运行的解决办法

    升级 iOS13 以后 快捷指令 App 也迎来全新版本 新设计的快捷指令 App 有诸多不同 尤其在权限控制上更为严格 这导致部分快捷指令打开时报错的问题 首次添加快捷指令规则后 运行时提示 无法打开 XXX 这个问题其实很容易解决 方法
  • linux 下 redis 设置密码

    在服务器上 这里以linux服务器为例 为redis配置密码 1 第一种方式 当前这种linux配置redis密码的方法是一种临时的 如果redis重启之后密码就会失效 1 首先进入redis 如果没有开启redis则需要先开启 root
  • matlab函数结果,从Matlab函数返回多个输出变量

    一些选择 添加一个参数以指定控制台的详细输出 但默认情况下将其设置为false function A B C test x y z verbose if nargin 3 verbose false end A 2 x B 2 y C 2
  • JavaScript基础--es6新增的数组方法

    今天给大家介绍一些es6新增的常用数组方法 1 映射数组 map 方法 目的 为了操作原数组 但不改变原数组的值 作用 map 方法返回一个新数组 数组中的元素为原始数组元素调用函数处理后的值 不会对空数组进行检测 返回值 新数组 一定和原
  • 欧拉角的理解

    1 欧拉角概念 百度百科 欧拉角 用来确定定点转动刚体位置的3个一组独立角参量 欧拉角由章动角 旋进角 即进动角 和自转角 组成 欧拉角为欧拉首先提出而得名 维基百科 Euler angles 莱昂哈德 欧拉用欧拉角来描述刚体在三维欧几里得
  • 【100%通过率 】【华为OD机试真题 c++/java】关联端口组合并【 2023 Q1

    华为OD机试 题目列表 2023Q1 点这里 2023华为OD机试 刷题指南 点这里 题目描述 有M 1 lt M lt 10 个端口组 每个端口组是长度为N 1 lt N lt 100 的整数数组 如果端口组间存在2个及以上不同端口相同
  • pycharm 退出scientific mode科学模式

    之前工作需要进入scientific mode将pycharm调成科学模式 后来使用bert模型发现一直报错 也没改动代码 困惑了大半天 偶然的机会 退出scientific mode发现不报错了 这里记录一下 我用的是pycharm社区版
  • 理解LSTM网络(翻译)

    Translated on December 19 2015 本文为博客 Understanding LSTM Networks 的翻译文章 原文链接 http colah github io posts 2015 08 Understan
  • MySQL数据库TDSQL架构分析及采用策略扩容流程

    MySQL数据库TDSQL架构分析及采用策略扩容流程 2016 10 14 22 16 401人阅读 评论 0 收藏 编辑 删除 分类 mysql 105 随着业务的发展 基于内存的NoSQL解决方案HOLD平台在高峰期一天支撑3000亿读
  • 太强大了!Packet Tracer抓包功能

    首先 咱们开启Cisco Packet Tracer软件 我这用的是5 3版 英文实在不好的可以将软件汉化 推荐使用英文版 对学习有好处 开启软件后 正常模式是实模式 如图 点击右下角的模式切换咱们切换到 模拟模式 界面如下 好 咱们先关掉
  • CSS3弹性盒子(Flex Box)

    CSS3弹性盒子 Flex Box 一 容器的属性 flex directionflex wrapflex flowjustify contentalign itemsalign content 1 flex direction属性决定主轴
  • Qt基础知识-创建Qt程序,Qt Creater常用快捷键,创建组件,对象树

    1 简介 Qt是一个跨平台的图形引擎 1991年由奇趣科技开发 优点 跨平台 接口简单易于上手 一定程度上简化了垃圾回收机制 2 创建Qt程序 名称 不能有空格 不能有中文 路径 不能有中文 创建cpp文件时选择继承的3个类 Qwidget