热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

qt入门介绍

1.Qt是一个跨平台的C开发库。主要用来开发图形用户界面(GUI)程序。Qt虽然经常被当做一个GUI库,用来开发图形界面应用程序ÿ


1.Qt 是一个跨平台的 C++开发库。主要用来开发图形用户界面(GUI)程序。


Qt 虽然经常被当做一个 GUI 库,用来开发图形界面应用程序,但这并不是 Qt 的全部;


Qt 除了可以绘制漂亮的界面(包括控件、布局、交互),还包含很多其它功能,比如多线程、


访问数据库、图像处理、音频视频处理、网络通信、文件操作等,这些 Qt 都已经内置了。


2.安装qt



wget http://download.qt.io/archive/qt/5.12/5.12.9/qt-opensource-linux-x64-5.12.9.run
chmod +x qt-opensource-linux-x64-5.12.9.run
sudo ./qt-opensource-linux-x64-5.12.9.run

3.新建一个项目


Console 用来创建控制台程序,Widgets 用来创建GUI程序。


1)QMainWindow:主窗口类,主窗口具有主菜单栏、工具栏和状态栏。 类似于一般的应用程序的主窗口。如果您想做个嵌套的窗口程序开发的软件,不妨选择这个 QMainWindow。


2)QWidget:是可视界面类的基类,也就是说 QMainWindow 类也是由 QWidget 继承封装而来。


所以 QWidget 要比 QMainWindow 功能少一些。


3)QDialog:对话框类,建立一个对话框界面。比较少使用此项作为基类。 一般以 QMainWindow和 QWidget 作为基类的居多。 注因为 QWidget 不带窗口标题栏等, 嵌入式里最好 QWidget。


4.qt工程说明









1)hello.pro 是项目管理文件,这个项目管理文件十分重要,当您加入了文件或者删除了文件, Qt Creator 会自动修改这个*.pro 文件。有时候需要打开这个*.pro 文件添加我们的设置项。


2)Header 分组,这个节点下存放的是项目内所有的头文件*.h。


3)Source 分组,这个节点下存放的是项目内的所有 C++源码文件*.cpp。


4)Forms 分组,这个节点下是存放项目内所有界面文件*.ui。 *.ui 文件由 XML 语言描述组成,编译时会生成相应的 cpp 文件,这样交叉编译器就可以编译它了。


5.项目文件*.pro


QT += core gui //添加了 Qt 的支持的模块,core与gui库是Qt的默认设置。
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets //如果是Qt5版本,在main.cpp 中 application 是在 QtWidgets 中的,因此要包含这个库。
/* 配置 */
CONFIG += c++11
DEFINES += QT_DEPRECATED_WARNINGS
/* SOURCES下的是源文件 */
SOURCES += \
main.cpp \
mainwindow.cpp

/* HEADERS下是头文件 */
HEADERS += \
mainwindow.h
/* FORMS 下是ui界面文件 */
FORMS += \
mainwindow.ui
/* qnx:判断是不是 qnx 操作系统,赋值 target.path = /temp/$${TARGET}/bin。 */
qnx: target.path = /tmp/$${TARGET}/bin
/* 如果是unix系统但不是安卓,赋值 target.path = /opt/$${TARGET}/bin。 */
else: unix:!android: target.path = /opt/$${TARGET}/bin
/* 如果target.path为空目录, 赋值 INSTALLS += target。 */
!isEmpty(target.path): INSTALLS += target

6.样式文件*.ui









1) ①是控件栏,有各种各样的控件,上方的 Filter 是过滤器,输入首写字母就可以快速定到我们想要找的控件。


2) ②显示的是我们的窗口程序了,上面已经带有 MainWindow 对象及其几个子对象, 默认MainWindow 就带有菜单栏和状态栏。


3) ③是对象栏, ②处用到的对象都在③处显示。


4) ④是属性栏, 点击③处对象栏的某个对象,就可以在④属性栏里编辑它的属性了。 属性项有很多,包括位置,大小,文字,颜色,字体等等。


7.头文件*.h


点击项目下的 Headers 下的 mainwindow.h,mainwindow.h 一般有与之对应的一个 cpp 文件叫 mianwindow.cpp。 其中 mainwindow.h 包含类的声明, mianwindow.cpp 包含类的实现。


#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include
QT_BEGIN_NAMESPACE
/* 定义名称空间 Ui ,里面有一个类 MainWindow。
这个 MainWindow 和下面的 MainWindow 不是同一个对象。
这个文件里的 MainWindow 类有一个成员*ui 就是指向最下面的 Ui::MainWindow 的指针。这都是为了使用.ui 文件设计界面的。
*/
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
/* MainWindow 的声明中第一行是 Q_OBJECT,
这是一个宏,由 Qt 进行处理,这也是 Qt 针对 C++扩展的地方,所有用到信号的类都要加这个宏。 */
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

8.源文件*.cpp


1)Sources 下的 mainwindow.cpp


#include "mainwindow.h"
/* MainWindow 的实现类中,#include "ui_mainwindow.h"这个文件是 Qt 根据.ui 文件自动生成的,
也就是说 ui_mainwindow.h 要点击编构建后才生成,我们才能看到这个文件。
构建/编译后可以在 debug/release 的目录找到这个文件。
*/
#include "ui_mainwindow.h"
/* 在 MainWindow 构造函数中用“,”隔开,
new 一个 Ui 中的 MainWindow。
这里是一种初始化成员的方法。
*/
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
/* 将this(指的是 MainWindow 类的本身),作为参数传到setupUi里,ui界面文件的对象会以this为父对象,所有子对象都将显示在MainWindow里。
要想使用 ui 里的对象,必须将代码写在 ui->setupUi(this)这句话之后,
因为 ui->setupUi(this)会先初始化里面的对象,只有初始化里面的对象我们才能使用这个对象。
注:this 在成员函数的开始执行前构造的,在成员的执行结束后清除。
*/
ui->setupUi(this); //进行界面初始化
}
MainWindow::~MainWindow()
{
/* 析构函数里 delete 掉 ui。
在 Qt里我们需要在析构函数里 delete的对象一般是 new创建的并且没有父对象的对象。
*/
delete ui;
}

2)Sources 下的 main.cpp


#include "mainwindow.h"
/* 在每一个使用 Qt 的应用程序中都必须使用一个QApplication 对象。
QApplication 管理了各种各样的应用程序的广泛资源,比如默认的字体和光标。
*/
#include
/* argc 是命令行变量的数量,argv 是命令行变量的数组。 */
int main(int argc, char *argv[])
{
QApplication a(argc, argv); //a 是这个程序的 QApplication。它在这里被创建并且处理这些命令行变量。
MainWindow w; //创建一个对象 w,这个对象就是 MainWindow。
w.show(); //调用方法 show()。这样程序界面才能显示

/* 这里就是 main()把控制转交给 Qt,并且当应用程序退出的时候 exec()就会返回。
在 exec()中, Qt 接受并处理用户和系统的事件并且把它们传递给适当的窗口部件。
*/
return a.exec();
}



推荐阅读
  • Hibernate延迟加载深入分析-集合属性的延迟加载策略
    本文深入分析了Hibernate延迟加载的机制,特别是集合属性的延迟加载策略。通过延迟加载,可以降低系统的内存开销,提高Hibernate的运行性能。对于集合属性,推荐使用延迟加载策略,即在系统需要使用集合属性时才从数据库装载关联的数据,避免一次加载所有集合属性导致性能下降。 ... [详细]
  • Linux下安装免费杀毒软件ClamAV及使用方法
    本文介绍了在Linux系统下安装免费杀毒软件ClamAV的方法,并提供了使用该软件更新病毒库和进行病毒扫描的指令参数。同时还提供了官方安装文档和下载地址。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • 在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的步骤和方法
    本文介绍了在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的详细步骤和方法。首先需要下载最新的Java SE Development Kit 9发行版,然后按照给出的Shell命令行方式进行安装。详细的步骤和方法请参考正文内容。 ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • Ubuntu安装常用软件详细步骤
    目录1.GoogleChrome浏览器2.搜狗拼音输入法3.Pycharm4.Clion5.其他软件1.GoogleChrome浏览器通过直接下载安装GoogleChro ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 本文介绍了在Ubuntu系统中清理残余配置文件和无用内容的方法,包括清理残余配置文件、清理下载缓存包、清理不再需要的包、清理无用的语言文件和清理无用的翻译内容。通过这些清理操作可以节省硬盘空间,提高系统的运行效率。 ... [详细]
author-avatar
r_elease靜
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有