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
运行后显示窗口。
最新文章
- 【JVM】JVM系列之垃圾回收(二)
- android 点击屏幕关闭 软键盘
- shell--题目
- HADOOP 2架构图
- Oracle11g中Exp命令空表不能导出的问题
- mysql 管理、备份、还原及查询的图形化gui工具
- IE下全局对象报 脚本错误提示“对象不支持此属性或方法”解决方案
- Acegi
- 创建线程的两种方式:继承Thread类和实现Runnable接口
- VS2010环境下使用VB开发网络编程(WinHttp)
- leetcode水题(一)
- django无法加载admin的静态内容的问题(Centos7+Nginx+uwsgi环境下)
- Spark SQL数据源
- 分布式爬虫框架XXL-CRAWLER
- Django-CRM项目学习(六)-rbac模块(权限组件)
- Android学习之基础知识三(Android日志工具Log的使用)
- one order 处理流程
- [2017BUAA软工助教]剩余个人作业与deadline
- Metronic-最优秀的基于Bootstrap的响应式网站模版
- cordova安卓手机<;a href=";tel:xxx";>;<;/a>;无法进入拨号界面问题
热门文章
- 从SynchronizedCollection说起
- 超详细!mac flutter 创建过程及遇到的问题
- python+opencv+pyqt5控制摄像头在Qlabel上显示
- Java 注解(Annotation)秒懂,你可以这样学,
- IdentityServer4在Asp.Net Core中的应用(三)
- poj2187凸包最远点对
- Metasploit没有db_autopwn命令的解决办法
- SVN更新操作提示需要清理操作,清理操作提示乱码,更新SVN失败
- IRC BOT原来是利用IRC下发C&;C命令——在xx云环境遇到了,恶意软件开的是6666端口
- 转:基于Flume的美团日志收集系统(一)架构和设计