Qt6基础篇(八)——QLabel
Qt6基础篇(八)——QLabel前言: 本篇文章介绍QLabel控件的用法。 1 介绍 QLabel是最常用的文本显示控件,在Qt Creator中归类到显示控件中(Display Widgets)。 通过Qt Creator打开ui文件,将可视化显示窗口的布局。 拖动一个QLabel控件到窗口上,右上方可以看到并设置该控件的名称,同时也是其成员变量名,编程时会使用。右下角可以对该控件进行更详细的设置。一些基础的设置比如位置、大小、显示的文本建议直接在窗口可视化的拖动鼠标设置。 2 设置文本 在mainwindow.h中增加一个函数 SetLable 定义。 123456789101112131415161718192021222324252627282930#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>#include...
Qt6基础篇(六)——创建UI
Qt6基础篇(六)——创建UI前言: 终端应用程序的UI如果用代码实现,非常耗时且不直观,好在可以通过Qt Creator可视化的方式创建UI文件。 1 创建UI文件 打开Qt Creator,点击 File -> New File 。 选择 Qt -> Qt Designer Form 。 根据自己的需要选择UI的 Form Template 。 设置UI的名称和存放的路径。 点击 Finish 。 点击 Yes to All 。 2 UI文件转.h文件 界面也可直接敲代码实现,但界面上的控件较多时,用代码区设置每一个控件的布局属性将是非常耗时的,更便捷的方式是通过Qt...
Qt6基础篇(五)——MessageBox
Qt6基础篇(五)——MessageBox前言: Qt中的MessageBox是一个简单好用的消息提示窗体,较为常用。 1 创建MessageBox 函数原型为。 1static void QMessageBox::about(QWidget *parent, const QString &title, const QString &text); QWidget *parent : 这个参数指定了对话框的父窗口。如果提供了一个有效的父窗口指针(即不是 nullptr),那么对话框将会与这个父窗口有关联。 const QString &title : 这个参数定义了对话框标题栏上显示的文本。在这个例子中,”Title” 就是对话框标题栏上的文字。 const QString &text : 这个参数定义了对话框内部显示的主要文本信息。在这个例子中,”Hello World!” 就是显示给用户的文本信息。 需要包含 QMessageBox 头文件,调用函数...
Qt6基础篇(四)——解读Qt的CMakeLists
Qt6基础篇(四)——解读Qt的CMakeLists前言: 开发c++ Qt6,有必要对CMakeLists有一些了解,方便管理和构建适合项目需求的工程。 1 CMakeLists 通过Qt Creator创建了一个空窗体Demo,以下是其CMakeLists.txt。 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970cmake_minimum_required(VERSION 3.5) # 指定CMake的最低版本。project(untitled VERSION 0.1 LANGUAGES CXX) # 指定工程名、项目版本号、语言类型。set(CMAKE_AUTOUIC ON) # 启用自动转换.ui文件的功能。set(CMAKE_AUTOMOC ON) #...
Qt6基础篇(三)——创建Demo并通过CMake在终端编译
Qt6基础篇(三)——创建Demo并通过CMake在终端编译前言: 打开Qt Creator。可以通过点击 Creator Project 或直接点击一个示例创建Demo,这里选择 Calculator Builder 示例。 1 创建桌面应用例程 设置工程放置的路径,然后点击 Copy Project and Open 新建这个例程。 按照默认配置,点击 Configure Project 。 创建后我们通过终端的CMake编译,不通过Qt Creator,工程里会自动创建好CMakeLists.txt,可以基于此修改出适合自己工程的CMakeLists.txt。 工程目录如下。 123456789╰─ tree -L 1.├── build├── calculatorbuilder.pro├── calculatorbuilder.qrc├── calculatorform.ui├── CMakeLists.txt├──...
Qt6基础篇(二)——安装c++开发环境
Qt6基础篇(二)——安装c++开发环境前言: 使用c++开发Qt,需要安装c++环境。 1 安装c++环境 开发C++ Qt,需要安装基础的C++开发环境,即GCC和c++标准库。 在Ubuntu中遇到“’type_traits’ file not found”这类错误,通常意味着你的开发环境中缺少C++标准库的头文件。type_traits是C++标准库的一部分,它应该包含在libc++或libstdc++中,具体取决于你使用的C++标准库版本。 对于大多数Ubuntu系统,默认的C++标准库是libstdc++,这是GCC的一部分。如果你试图编译的代码依赖于C++11或更高版本的特性,那么你需要确保安装了支持这些特性的编译器和相关的开发文件。 以下指令中x为GCC的版本号,比如 sudo apt-get install g++ build-essential libstdc++-11-dev 。 12sudo apt-get updatesudo apt-get...
c++基础篇(三)——命名空间
c++基础篇(三)——命名空间前言: 与c相比,命名空间是c++的一大特色,这样的设计注定了c++是面向超大型编程项目的。 1 介绍 为什么需要命名空间?在c中并不支持命名命名空间,c在大型项目中会遇到烦人的命名重复的问题。大型工程中,不同的模块会分配给不同的人或团队开发,各自模块测试通过,最终合到一起时可能会发现命名重复,给模块设计带来额外的负担。使用第三方代码时,也存在与其命名重复的可能,c++引入命名空间可以很好的解决大型项目中命名重复的问题。 2 定义命名空间 c++中通过关键词 namespace 定义一个命名空间,在这个命名空间内定义的变量或函数即属于这个命名空间,必须通过该命名空间才能访问到。以下代码定义了命名空间 MyNameSpace ,并且通过命名空间名访问了命名空间内的函数和变量,访问通过 :: 符号。 12345678910111213141516171819202122#include <iostream>namespace MyNameSpace{int...
c++基础篇(二)——头文件
c++基础篇(三)——头文件前言: 在c++中头文件的包含形式更加多样。 1 包含头文件 在c语言中包含头文件时必须带上文件后缀名 .h ,而c++有着其独特的形式。 类型 规则 示例 说明 c旧式风格 带.h后缀 #include <stdio.h> c中使用 c++旧风格 带.h后缀 #include <iostream.h> c++中使用,对应的文件名是iostream.h c++新风格 不带后缀 #include c++中使用,对应的文件名是iostream c++风格 带c前缀 #include c++中使用c头文件,一些c库有c++版本,其名称带有c前缀,比如c中的math.c在c++中为cmath 如果用c++代码写,标准库的头文件建议不带 .h 后缀名,c标准库的代码建议使用c前缀名的方式。 123456789101112#include <iostream>#include <cmath>#include...
c高级篇(一)——难发现的命名重复
c高级篇(一)——难发现的命名重复前言: 这是我开始编写的第一个高级篇博文,分类的大体的原则是,基础篇写必须掌握的基础知识,进阶篇写需要一定理解深度才能真正掌握的知识,而高级篇写一些偏经验性的,书本上可能学不到的知识。 1 宏和枚举名重复 为什么需要命名空间?在c中并不支持命名命名空间,在大型项目中会遇到烦人的命名重复的问题,比如宏名、枚举名、全局变量名、函数名。大型工程中,不同的模块会分配给不同的人或团队开发,各自模块测试通过,最终合到一起时可能会发现命名有较多重复,没发现的就将成为Bug。比如下面这c段代码。 123456789101112131415#include <stdio.h>typedef enum{ NAME = 0} tenuTest;#define NAME 5int main(void){ printf("NAME is %d\n", NAME); return 0;} 这段代码枚举和宏都定义了...
c++基础篇(一)——输入输出
c++基础篇(一)——输入输出前言: 想起当年在图书馆自学c++,奈何毕业七年了,工作中并不需要使用c++。最近想搞几个开源项目,甚至将来做独立游戏开发,遂将书本拾起,重温旧梦。 博文将假定阅读者已有一定c基础,在此基础上学习c++。 1 第一个c++程序 用经典的 Hello World! 输出开局。 12345678#include <iostream>int main(void){ std::cout << "Hello World!" << std::endl; return 0;} 输出结果为。 1Hello World! cout 是c++的打印输出,std:: 表示其所处的命名空间, endl 表示输出换行。 123456789101112#include <iostream>int main(void){ int number...