开始第一个Qt程序

原创 2007年10月15日 22:42:00

          让我们一起开始第一个Qt应用程序,当然,如果你手头有Qt的doc文档,你同样可以参阅doc文档中的Qt Tutorial 1

     你可以通过vi或者emacs编写下面的一段代码:
 
0001 #include <QApplication>
0002 #include <QPushButton>
0003
0004 int main(int argc, char **argv)
0005 {
0006     QApplication app(argc, argv);
0007
0008     QPushButton hello("Hello Qt!");
0009     hello.resize(120, 30);
0010
0011     hello.show();
0012     return app.exec();
0013 }
 
    下面我们一行一行的解释一下代码的意思。
    第1行与第2行是包含QApplication,和QPushButton的类的定义,其中QApplication类的对象在每个一个Qt的GUI应用程序都必须有,这是每一个GUI应用程序都必须有的对象,这个类的对象将管理整个应用程序的GUI资源。QPushButton是一个GUI的按钮,像一般的Windows按钮一样,用户可以通过点击或释放的方式触发按钮事件。
第3行中的app对象是QApplication类的实例,这里我们将argc和argv这样命行参数传递给QApplication的构造函数QApplication( int & argc, char ** argv )。

    第8行这里通过调用QPushButton的构造函数QPushButton( const QString & text, QWidget * parent = 0 )来构造一个QPushButton的对象hello,并将按钮上显示的文本设置为Hello Qt!

    第9行将button的按钮的大小设置为120像素的宽,30像素的高。第11行的代码将我们生成的hello的按钮显示出来。这个show函数其实是QPushButton的祖父级类QWidget的函数QWidget::show(),在Qt中,几乎所有的GUI组件都是从QWidget上继承而来的。像上面第9行的resize函数也是QWidget的成员函数void resize( int w, int h )

    第12行,main函数将控制大权传递给Qt,即QApplication的实例对象app,我们前面提到过每一个Qt应用程序都有且仅有一个QApplication对象,以用来维护整个Qt资源,通过调用exec()来执行Qt程序,这个exec()函数是QCoreApplication的成员函数,其中QCoreApplication是QApplication的基类。在QCoreApplication::exec()中,应用程序处理所有由系统和用户触发的事件,并将这个事件传递给指定的组件,比如,当用户点击按钮时,触发一个press事件,我们会在后面提到的信号和槽的概念,这样就可以让程序弹出如对话框之类的处理,具体的事件处理过程可参阅Qt件研究
    现在,我们将这个程序编译出来。
    在源程序所在目录执行qmake –project命令生成.pro文件。
      
 [root@localhost hello] qmake -project
    这是在这个目录下生成了与目录名相同的.pro文件,如hello目录,其.pro文件名为hello.pro。
接着执行
             
 [root@localhost hello] qmake
 
这时在这个目录下生成Makefile文件,然后执行make。
[root@localhost hello] make
    这个时候在这个目录生成了可执行程序,其程序的名字与这个目录名相同。好了,运行一下吧,看看结果。
[root@localhost hello] ./hello
 

    记住,运行这个程序必须在X11环境下运行。

 

highcharts图表常见问题:关于如何设置数据点起始位置为坐标原点的问题分析与总结篇独家爆料

从使用highcharts图表开始到如今也见证了很多使用者一直困惑着这样一个问题:如何才能够设置第一个数据点从坐标原点开始?要在什么条件下才能够从原点开始画? 针对这样一个问题,我一直没有过多地...
  • u012843873
  • u012843873
  • 2016年10月08日 16:12
  • 5789

scrapy爬虫起步(1)--第一个爬虫程序

使用scrapy抓取豆瓣小组的组名1. 新建scrapy工程新建工程文件夹,命令行cd到该目录下,用下面的命令新建一个scrapy工程 scrapy startproject dmoz 新建好的...
  • felcon
  • felcon
  • 2015年06月16日 15:49
  • 894

开始第一个javaFX应用

初次在oracle官网上了解到javaFX让我感到异常兴奋,这意味着想我这种不喜欢在学.net的人,给了我一个很大的惊喜,java也能写出漂亮的界面,打今起我将不断的学习官方提供的教程,希望有照一日,...
  • guanguoxiang
  • guanguoxiang
  • 2015年04月27日 20:35
  • 1103

为什么c语言第一个数组元素要从a[0]开始数起,不从a[1]数起呢?

大家学习c语言刚接触数组时候,书上说第一个数组元素要从下标0开始数起,不能从1开始数,比如 int a[4]={1,2,3,4}; 那么a[0]=1; 为什么不从1数起呢 即a{1}=1呢?不更符合...
  • zhangyang249
  • zhangyang249
  • 2016年12月31日 19:32
  • 1924

我的第一个java定时器

在开发中,我们经常需要一些周期性的操作,例如每隔几分钟就进行某一项操作。这时候我们就要去设置个定时, 接下来就去开发我的第一个java定时器吧,Java计时器实用程序允许您执行线程或任务在一个预先确定...
  • liaodehong
  • liaodehong
  • 2015年08月27日 10:03
  • 1456

python-webdriver 开始第一个脚本

2.1 为什么选 python 之前的菜鸟系列是基于 java 的,一年没学其实也忘的差不多了,目前所测的产品 部分也是 python 写的,而且团队也在推广 python ,其实就测试人...
  • Brave_insist
  • Brave_insist
  • 2017年11月08日 20:38
  • 61

hichart中,让折线图从原点开始

横坐标为数字:var chart = new Highcharts.Chart({ chart:{//图表区用于设置图表区的相关属性 renderTo: 'content',/...
  • u012884402
  • u012884402
  • 2015年11月16日 16:25
  • 1199

java中获取一个集合(Set)的子集的方法

想获取一个链表(List)的子集,可以直接使用subList方法,但是集合(Set)并没有类似的subSet的方法。 有些应用场景需要获取一个集合的子集,这时候该怎么做呢? 最容易想到的方式,就是构造...
  • mj158518
  • mj158518
  • 2016年02月05日 20:44
  • 11127

开始搭建第一个zookeeper

首先需要下载zookeeper的tar包,地址为http://zookeeper.apache.org,然后再linux中解压并编译tar包。# tar-xvzf zookeeper-3.4.5.ta...
  • ZHOUCHAOQIANG
  • ZHOUCHAOQIANG
  • 2016年01月16日 14:24
  • 2038

开始第一个SpringMVC

Android Studio和Idea师出同门 Idea可以说是Java Web开发利器下面是笔者的第一个maven项目,很简单,只是记录一下过程,轻拍 打开idea新建一个maven项目填写包名...
  • byhook
  • byhook
  • 2016年08月11日 23:27
  • 897
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:开始第一个Qt程序
举报原因:
原因补充:

(最多只允许输入30个字)