FirstTry_HelloWorld
#include <qapplication.h>
#include <qpushbutton.h>
int main( int argc, char **argv )
{
QApplication a( argc, argv );
QPushButton hellobtn( "Hello world!", );
hellobtn.resize(, );
a.setMainWidget( &hellobtn );
hellobtn.show();
return a.exec();
} http://i.cnblogs.com/EditPosts.aspx?opt=1
代码说明:
#include <qapplication.h>
这一行包含了QApplication类的定义。
在每一个使用Qt的应用程序中都必须使用一个QApplication对象。
QApplication管理了各种各样的应用程序的广泛资源,比如默认的字体和光标。
#include <qpushbutton.h>
这一行包含了QPushButton类的定义。
QPushbutton是一个经典的图形用户界面按钮,用户可以按下去,也可以放开。它管理自己的观感,就像其他每一个QWidget.一个窗口部件就是一个可以处理用户输入和绘制图形的用户界面对象。程序员可以改变它的全部观感和它的许多主要的属性(比如颜色),还有这个窗口部件的内容。一个QPushButton可以显示一段文本或者一个QPixmap.
int mian(int argc, char **argv)
{
main()函数是程序的入口。几乎在使用Qt的所有情况下,main()只需要在把控制转交给Qt库之前执行一些初始化,然后Qt库通过事件来向程序告知用户的行为。
argc是命令行变量的数量,argv是命令行变量的数组。这是一个C/C++特征。它不是Qt专有的,无论如何Qt需要处理这些变量。(请看下面)
QAppication a(argc,argv);
a是这个程序的QApplication。它在这里被创建并且处理这些命令行变量(比如在X窗口下的-display)。
请注意,所有被Qt识别的命令行参数都会从argv中被移除(并且argc也因此而减少)。关于细节请看QApplication::argv()文档。
注意:在任何Qt的窗口系统部件被使用之前创建QApplication对象是必须的。
QPushBUtton hellobtn("Hello world!",0);
这里,在QApplication之后,接着的是第一个窗口系统代码:一个按钮被创建了。
这个按钮被设置成显示“Hello world!”并且它自己构成了一个窗口(因为在构造函数指定0为它的父窗口,在这个父窗口中按钮被定位)。
hellobtn.resize(100,20);
这个按钮被设置成100pixel width, 20 pixel height(加上窗口系统边框)。
在这种情况下,我们不用考虑按钮的位置,并且我们接受默认值。
a.setMainWidget(&hellobtn);
这个按钮被选为这个应用程序的主窗口部件。如果用户关闭了主窗口部件,应用程序就退出了。
你不用必须设置一个主窗口部件,但绝大多数程序都有一个。(在Qt4以上版本被取消了)
hellobtn.show();
当你创建一个窗口部件的时候,它是不可见的。你必须调用show()来使它变为可见。
return a.exec();
这里就是main()把控制转交给Qt, 并且当应用程序退出的时候exec()就会返回。
在exec()中,Qt接受并处理用户和系统的事件并且把它们传递给适当的窗口部件。
}
接下来编译和运行这个程序。
编译
编译一个C++应用程序,你需要创建一个makefile。创建一个Qt的makefile的最容易的方法是使用Qt提供的连编工具qmake。如果你已经把main.cpp保存到它自己的目录了,你所要做的就是这些:
在保存的目录中打开终端,
qmake hello.pro
上命令调用qmake来生成一个.pro(项目)文件,运行后会生成一个makefile。
现在输入make(或者nmake,如果你使用Visual Studio),然后运行你的第一个Qt应用程序!
qmake hello.pro
make
./hello
运行后显示窗口。
FirstTry_HelloWorld的更多相关文章
随机推荐
- Generator 函数的语法
简介 § ⇧ 基本概念 Generator 函数是 ES6 提供的一种异步编程解决方案,语法行为与传统函数完全不同.本章详细介绍 Generator 函数的语法和 API,它的异步编程应用请看< ...
- Delphi编码转换
1.Delphi 的 Utf-8 转换 - findumars - 博客园.html https://www.cnblogs.com/findumars/archive/2013/12/26/3492 ...
- selenium常用API实例
1.访问网页地址 driver.get( url ); driver.navigate( ).to( url ); 2.访问网页前进.后退 driver.navigate( ).forward( ); ...
- HDU-2196-树形dp/计算树上固定起点的最长路
Computer Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- HDU 4825 Trie树 异或树!
Xor Sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 132768/132768 K (Java/Others)Total S ...
- Python写入CSV文件的问题
这篇文章主要是前几天我处理数据时遇到的三个问题: Python写入的csv的问题 Python2与Python3处理写入写入空行不同的处理方式 Python与Python3的编码问题 其实上面第3个问 ...
- Python执行Linux系统命令方法
Python执行Linux系统命令的4种方法 (1) os.system 仅仅在一个子终端运行系统命令,而不能获取命令执行后的返回信息 复制代码代码如下: system(command) -> ...
- day5-re模块
一.概述 但凡有过语言开发经验的童鞋都清楚,很多时候需要进行字符串的匹配搜索.查找替换等处理,此时正则表达式就是解决问题的不二法门.正则表达式并不是Python的一部分.正则表达式是用于处理字符串的强 ...
- iOS自动化探索(七)自动化测试框架pytest - 测试报告
这里我们单独来看下关于如何生存测试报告 准备测试代码如下: #coding: utf- import pytest @pytest.fixture() def login(): print '输入账号 ...
- 001——vue.js初始安装:
windows下安装: 1.https://nodejs.org/en/ 下载安装node.js. 在cmd窗口输入node -v检查node是否安装成功. npm也随着node安装了:npm -v ...