Qt开发基本步骤示例:输入半径显示圆的面积

news2024/12/28 4:45:24

目录

1. 创建一个新项目

1.1 创建类的基类

1.2 main.cpp代码释义

2. 代码写在哪?

2.1 怎么找到我们需要的函数?


1. 创建一个新项目

点击创建项目,开始创建:

1.1 创建类的基类

  1. QMainWindow:带菜单栏的窗口
  2. QWidget:空白窗口
  3. QDialog: 对话框窗口

 

注意:保存项目的路径中不能有中文!项目工程名称一般不要有特殊符号或者中文!

 

1.2 main.cpp代码释义

单击完成,系统就自动打开了main.cpp文件,如下图所示:

  1.  #include "dialog.h":包含了程序中要完成功能的Dialog类的定义,在Dialog类中封装完成所需要的功能。注意:使用哪个类就必须将该类的头文件引用过来。例如,若用到了一个按钮类,则必须在此处顶部添加一行代码:#include "QPushButton",这表明包含了按钮QPushButton类的定义。
  2. #include <QApplication>:Application类的定义。在每个使用Qt图形化应用程序中都必须使用一个QApplication对象。QApplication管理了各种各样的图形化应用程序的广泛资源、基本设置、控制流及事件处理等。
  3. int main(int argc, char *argv[]):应用程序的入口,几乎在所有使用Qt的情况下,main() 函数只需要在将控制转交给Qt库之前执行初始化,然后Qt库通过事件向程序告知用户的行为。所有Qt程序中都必须有且只有一个main() 函数。main() 函数有两个参数,即:argc和argv。argc是命令行变量的数量,argv是命令行变量的数组。
  4. QApplication a(argc, argv):a是这个程序的QApplication对象。在任何Qt的窗口系统部件被使用之前必须创建QApplication对象。它在这里被创建并且处理这些命令行变量。所有被Qt识别的命令行参数都将从argv中被移去(并且argc也因此而减少)。
  5. Dialog w:创建一个对话框对象。
  6. w.show():当创建一个窗口部件的时候,默认它是不可见的,必须调用show() 函数使它变为可见。
  7. return a.exec():程序进入消息循环,等待可能的输入进行响应。这里就是main() 函数将控制权转交给Qt,Qt完成事件处理工作,当应用程序退出的时候,exec() 函数的值就会返回。在exec() 函数中,Qt接收并处理用户和系统的事件并且将它们传递给适当的窗口部件。

2. 代码写在哪?

可以看到左边菜单栏中有4个文件,其中 main.cpp 是主函数。dialog.cpp 是类的函数,一般情况下,窗口的属性和添加控件的操作都会在类的构造函数中去写,优点是可以让主程序中无多余代码,程序阅读也方便。而 dialog.h 是类和头文件,dialog.ui 是界面设计代码。

比如我现在想要修改一下窗口的标题,然后将窗口设置为固定大小并且不可以拉伸。那么问题来了,假设我不知道这个修改窗口标题的函数是什么该怎么办呢?

2.1 怎么找到我们需要的函数?

我们可以单击左侧的帮助按钮,然后将查询方式改为索引,接着我们开始在搜索框中搜索我们想要函数。那搜什么呢?既然我们想设置的是窗口的标题,那么肯定是和窗口有关。那么我们先试着输入单词window,然后我们发现下面有一个函数 setWindowTitle() 。

 

除了在帮助中查找,我们还可以在电脑的开始菜单栏中找到Qt文件夹下的 Assistant (助手)。

 打开Qt助手,我们还是切到索引,然后输入单词 window,如下图:

 注意:如果函数在类中未找到,可去其基类中查找。

 

 后退、向前可以点击左上角的2个黄色箭头。

接着我们开始写代码:

#include "dialog.h"
#include "./ui_dialog.h"

Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
    , ui(new Ui::Dialog)
{
    ui->setupUi(this);

    // 修改窗口标题
    this->setWindowTitle("我的第一个窗口");

    // 修改窗口的大小
    this->resize(500, 300);

    // 设置窗口不可拉伸
    this->setFixedSize(600, 600);

}

Dialog::~Dialog()
{
    delete ui;
}

看下运行效果:

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/384057.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第一章——冯·诺伊曼结构计算机工作原理及层次结构分析

&#x1f3e1;个人主页 &#xff1a; 守夜人st &#x1f680;系列专栏&#xff1a;计算机组成原理 …持续更新中敬请关注… &#x1f649;博主简介&#xff1a;软件工程专业&#xff0c;在校学生&#xff0c;写博客是为了总结回顾一些所学知识点 目录第一章——冯诺伊曼结构计算…

深入浅出RPC框架-学习笔记

1 基本概念 1.1 本地函数调用 1.2 远程函数调用 1.3 RPC概念模型 5个模型组成&#xff1a;User、User-Stub、RPC-Runtime、Server-Stub、Server 1.4 一次RPC的完整过程 1.4.1 IDL (Interface description language)文件 IDL通过一种中立的方式来描述接口&#xff0c;使得在不…

JavaScript(1)

JavaScript简介 JavaScript是一门跨平台、面向对象的脚本语言&#xff0c;用来控制网页行为的&#xff0c;它能使网页可以交互。 JavaScript引入方式 1、内部脚本 将js代码定义在HTML页面中&#xff0c;在HTML中&#xff0c;JavaScript代码必须位于<script>与</scrip…

用C语言写一个自己的shell-Part Ⅱ--execute commands

Part Ⅱ–execute commands Exec This brings us to the exec family of functions. Namely, it has the following functions: execlexecvexecleexecveexeclpexecvp For our needs,we will use execvp whose signature looks like this int execvp(const char *file, cha…

【数据库专题】数据库Mongodb之深入认知云计算三种服务方式、mongodb特点、mongodb重要进程 mongod、mongo、其他进程区别

文章目录一、什么是云计算1. IaaS:基础设施即服务2. SaaS:软件即服务3. PaaS:平台即服务二、大数据与云计算关系三、什么是MongoDB四、大数据与MongoDB五、MongoDB特点六、安装MongoDB七、重要进程介绍7.1 mongod进程7.2 mongo进程7.3 其他进程7.3.1 mongodump重建数据库7.3.2 …

解决封号 Walmart最全申诉步骤

最近龙哥听说不少平台的账号都被封掉&#xff0c;登不上去了。所以龙哥赶紧就把这篇Walmart申诉教程提上日程&#xff0c;以防这个不时之需哈。当时Walmart的这个封号申诉规则和社交平台的还是有很大区别的&#xff0c;今天龙哥就从封号原因和申诉流程两方面展开&#xff0c;让…

210 裸机程序烧录

一、驱动安装 1.1 dnw驱动安装 禁用win10驱动程序强制签名 设置 -> 更新和安全 -> 恢复 -> 立即重启 -> 疑难解答 -> 高级选项 -> 启动设置 -> 重启 -> 按提示输入“F7”硬件设备正常上电工作&#xff0c;插入USB线连接电脑&#xff0c;设备管理器识…

源表测试软件下载安装教程

软件&#xff1a;源表测试软件NS-SourceMeter 语言&#xff1a;简体中文 环境&#xff1a;NI-VISA 安装环境&#xff1a;Win10以上版本&#xff08;特殊需求请后台私信联系客服&#xff09; 硬件要求&#xff1a;CPU2GHz 内存4G(或更高&#xff09;硬盘500G(或更高&#xf…

BGP之BGP联邦综合实验

目录 BGP联邦综合实验 实验图 网段划分 基础配置 路由配置 启动AS2中的ospf--- IGP协议 检测IGP 启动AS之间的BGP 测试 发布R1路由 修改&#xff1a;下一跳解决上述问题 解决水平分割 发布R8路由 测试 AS2内部环回路由信息互相访问 配置空接口 发布静态路由 测试…

经典蓝牙Sniff Mode

文章目录IntroductionApplicationSniff Sub-ratingReferenceIntroduction Sniff mode为两个已连接的经典蓝牙设备提供了有效的降低功耗的方法。我们知道&#xff0c;当没有数据需要传输的时候&#xff0c;两个已连接的蓝牙设备之间也需要每两个slots完成一次POLL packet - NUL…

系列九、视图/存储过程/存储函数/触发器

一、视图 1.1、概述 视图&#xff08;View&#xff09;是一种虚拟存在的表。视图中的数据并不在数据库中实际存在&#xff0c;行和列数据来自定义视图的查询中使用的表&#xff0c;并且是在使用视图时动态生成的。 通俗的讲&#xff0c;视图只保存了查询的SQL逻辑&#xff0c;…

pb插入ole控件点击insert+control时自动关闭解决办法

pb插入ole控件点击insert control时pb应用程序自动关闭解决思路 {F2F7F2A6-E582-11D1-89AC-00C04FCAF6E3} {F515306D-0156-11d2-81EA-0000F87557DB} 1、问题现象:当在powerbuilder中插入OLE控件点击insert control时,应用程序自动关闭,如图 在网上查询时有人说是其他…

深度剖析:伊朗钢铁厂入侵路径推测及对钢企数字化安全转型启示

2022年6月27日&#xff0c;名为Gonjeshke Darande的黑客组织声称对隶属于伊朗革命卫队&#xff08;IRGC&#xff09;和伊朗巴斯杰民兵组织&#xff08;Basij&#xff09;的Khouzestan、Mobarakeh、Hormozgan三家钢铁公司开展了网络攻击&#xff0c;致使Khouzestan钢铁厂一台重型…

【论文阅读】Attributed Graph Clustering with Dual Redundancy Reduction(AGC-DRR)

【论文阅读】Attributed Graph Clustering with Dual Redundancy Reduction&#xff08;AGC-DRR&#xff09; 文章目录【论文阅读】Attributed Graph Clustering with Dual Redundancy Reduction&#xff08;AGC-DRR&#xff09;1. 来源2. 动机3. 模型框架4. 方法介绍4.1 基本符…

Linux端口开通

Linux端口开开启有两种方式 firewall方式&#xff08;centos7.*&#xff09;修改iptables&#xff08;centos6.*&#xff09; 一、firewall方式 查看防火墙状态firewall-cmd --state如果返回的是 “not running”&#xff0c;那么需要先开启防火墙&#xff1b; 开启防火墙sy…

Java02 变量和运算符

Java02 变量和运算符 2.1 Java代码的基本格式 //类的定义 修饰符 class 类名{public static void main(String[] args){// 代码System.out.println("Hello World&#xff01;");} }现阶段&#xff0c;可以将一个类理解成Java程序&#xff08;.java文件&#xff09;…

html部分codewhy网课学习笔记

day1 网页显示的过程和服务器 浏览器内核,也称为渲染引擎 head标签描述网页的原数据&#xff0c;如title shifttab是向前缩进 div>ul>li可以快速生成 <div> <ul> <li></li> </ul> </div> 在早期,单标签如<input>也可写为&l…

字节前端架构组工程化代码片段

如何使用交互式的命令行工具下载项目模板 这部分代码实现了一个用户交互的 GitHub 模板下载工具。首先你需要在github上创建一个项目&#xff0c;然后使用下面介绍的代码就可以用命令行拉取到本地&#xff0c;并解压了。 它使用 enquirer 库提示用户输入仓库的创建者、名称、…

npm版本过低造成的各种问题汇总及升级方法

npm does not support Node.js 这个是因为npm和Node.js的版本不合适&#xff0c;版本对照表在这里&#xff1a;https://nodejs.org/zh-cn/download/releases/ 查看node和npm的版本&#xff1a; node -v npm -v试图装一个npm&#xff0c;结果报错&#xff1a;TypeError: Canno…

C++面向对象之多态性

文章目录C面向对象之多态性1.静态多态2.动态多态3.多态的好处3.1使用方法4.纯虚函数5.虚析构与纯虚析构5.1问题5.2解决6.其他知识点7.代码8.测试结果8.1父类中无虚函数&#xff0c;父类的指针指向子类对象&#xff0c;将调用父类中的函数&#xff0c;无法调用子类中的重写函数&…