#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的更多相关文章

随机推荐

  1. ubuntu mac terminal install software

    http-server // ubuntu sudo npm install http-server -g npm node.js yarn

  2. 从源码角度分析 Kotlin by lazy 的实现

    by lazy 的作用 延迟属性(lazy properties) 是 Kotlin 标准库中的标准委托之一,可以通过 by lazy 来实现. 其中,lazy() 是一个函数,可以接受一个 Lamb ...

  3. Mac下配置NDK环境

    下载NDK 这里写图片描述配置NDK开发环境 第一步:打开Mac终端 Snip20170208_1.png 第二步:在终端中输入:open -e .bash_profile,打开.bash_profi ...

  4. JavaScript权威指南--表达式与运算符

    本章要点 表达式是javascript中的一个短语,javascript解释器会将其计算出一个结果. 程序中的常量.变量名就是一种简单的表达式.复杂的表达式是由简单的表达式组成的,比如数组访问表达式. ...

  5. 关系型数据库(RDBMS)与 MongoDB 的对应关系

    谈一下关系型数据库(RDBMS)与 MongoDB 的对应关系:

  6. C++ 线程的创建、挂起、唤醒和结束 &&&& 利用waitForSingleObject 函数陷入死锁的问题解决

    最近在写一个CAN总线的上位机软件,利用CAN转USB的设备连到电脑上,进行数据的传输.在接收下位机发送的数据的时候采用的在线程中持续接收数据. 1.在连接设备的函数中,开启线程. ,CREATE_S ...

  7. VMware虚拟机创建安装之后不出现VMnet1和VMnet8虚拟网卡

    大家可能遇到过安装虚拟机之后,不出现这两张虚拟网卡,造成一系列的网络问题 VMware虚拟机无法将网络改为桥接状态 本人亲试可行的解决办法 首先把你之前安装的VMware虚拟机卸载,清理得一干二净: ...

  8. sql复制表结构及复制表数据

    一.复制表结构 假设我们有一个数据表Person,有Id,FirstName,LastName,Weight,Height5个列,表结构可以参考这一篇.现在我们想创建一个新表叫People,表结构和P ...

  9. 【51nod-1432】独木舟

    排序后用二分,一直卡在最后一组数据,最后改成long long才AC... #include <bits/stdc++.h> using namespace std; typedef lo ...

  10. CF910A

    题解: 简单dp dp[i]=min(dp[i-j])+1; 代码: #include<bits/stdc++.h> using namespace std; ; int n,m,dp[N ...