Qt 学习之路 :MainWindow 简介
来源:互联网 发布:股票交易用什么软件 编辑:程序博客网 时间:2024/05/17 22:59
前面一篇大致介绍了 Qt 各个模块的相关内容,目的是对 Qt 框架有一个高屋建瓴般的了解。从现在开始,我们将开始尝试使用 Qt 开始新的历程。由于我们已经比较详细地介绍过信号槽的相关内容,因此我们可以用一个新的程序开始进一步的学习,同时对信号槽有一个比较深入的理解。
QMainWindow是 Qt 框架带来的一个预定义好的主窗口类。所谓主窗口,就是一个普通意义上的应用程序(不是指游戏之类的那种)最顶层的窗口。比如你现在正在使用的浏览器,那么主窗口就是这个浏览器窗口。试着回想一下经典的主窗口,通常是由一个标题栏,一个菜单栏,若干工具栏和一个任务栏。在这些子组件之间则是我们的工作区。事实上,QMainWindow正是这样的一种布局。
下面我们新建一个工程。还记得在新建工程的时候,Qt Creator 通常会帮助我们创建一个MainWindow吗?我们曾经为了介绍信号槽,将main()函数做了修改。现在我们直接使用 Qt Creator 生成的代码来编译运行一下:
#include <QApplication>#include "mainwindow.h"int main(int argc, char* argv[]){ QApplication app(argc, argv); MainWindow win; win.show(); return app.exec();}
对于一般的 Qt 应用程序,我们所需要做的,就是编写我们的主窗口代码,主要是向其中添加各种组件,比如菜单、工具栏等,当然,最重要的就是当中的工作区。当我们将这些都处理完毕之后,基本上程序的工具也可以很好地实现。
通常我们的程序主窗口会继承自QMainWindow,以便获得QMainWindow提供的各种便利的函数。这也是 Qt Creator 生成的代码所做的。
由于QMainWindow这个类在 Qt 5 中并没有什么改变,因此上面的代码可以直接拿到 Qt 4 中进行编译。事实上,我们使用 Qt Creator 生成的代码也是可以直接在 Qt 4 中编译。只不过需要注意一点:Qt 4 中没有 widgets 模块,因此在 pro 文件中,我们通常需要这么来写:
QT += core guigreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsTARGET = qtdemoTEMPLATE = appSOURCES += main.cpp \ mainwindow.cppHEADERS += mainwindow.h
简单解释一下 pro 文件。首先,我们定义了 QT,用于告诉编译器,需要使用哪些模块。这些模块都在前面章节中有过介绍。我们通常需要添加 core 和 gui。第二行,如果 Qt 的主版本号(QT_MAJOR_VERSION)大于 4,也就是 Qt 5,则需要另外添加 widgets(因为在 Qt 5 中,所有组件都是在 widgets 模块定义的)。TARGET 是生成的程序的名字。TEMPLATE 是生成 makefile 所使用的模板,比如 app 就是编译成一个可执行程序,而 lib 则是编译成一个链接库(默认是动态链接库)。SOURCES 和 HEADERS 顾名思义,就是项目所需要的源代码文件和头文件。现在,我们只需使用默认的 pro 文件即可。以后随着项目的不断增大,pro 文件通常会非常复杂。
- Qt 学习之路 :MainWindow 简介
- Qt 学习之路 2(7):MainWindow 简介
- Qt之MainWindow学习
- Qt学习之路(11): MainWindow
- Qt学习之路(11): MainWindow (转载)
- Qt学习之路(11): MainWindow
- Qt学习之路(11): MainWindow
- Qt学习之路(11): MainWindow
- Qt学习之路(11): MainWindow
- QT5 学习之路11---MainWindow 简介
- Qt学习笔记05【MainWindow 简介】
- Qt学习之路MainWindow学习过程中的知识点
- QT之GUI学习笔记(六)-----mainWindow
- QT之MainWindow
- QT实例之十二(mainwindow)
- Qt 学习之路--Qt 模块简介
- MainWindow 简介
- MainWindow简介
- mysql停止查询线程
- DCMTK 时间段查询
- 面向对象
- clip-path 兼容多种浏览器
- 命令行下Jar包打包小结
- Qt 学习之路 :MainWindow 简介
- label的创建
- C\C++中void及void指针深层探索
- C:数组和指针
- ZRY(周大神)代码 里的一些解释
- Java 多线程 线程的优先级
- DDMS 使用小结
- 编译安装glibc
- 【bzoj 1051】[HAOI2006]受欢迎的牛(Tarjan缩点)