最近在做个QT的小项目,作为C++初学者,一直用java的鄙人,表示压力很大.搜索论坛和各种书籍,却发现大家都在讨论高深的技术,这对我们这些菜鸟来说可是苦了,故写几篇博客,以为和我一样的初学者提供借鉴..
本章介绍QT工程的构架.Qt和java不是很一样,把类和方法完全的拆开了,不愧是C++的扩展.所以对java程序员应该做好改正自己思想的准备.
首先我们来看QtCreater的图:
1.其中Forms是存放ui文件,这个类似C#的GUI设计,暂时不谈
2.这个是头文件的所在文件夹,也就是存放各种类的地方,
3..cpp文件夹,大部分的代码都在这里写(当然,很多方法,对象要在.h文件夹里声明),作为C++的扩展,QT同样必须先声明后使用,无论在类中还是在方法中.
实例(Hello World)如下:
1.新建工程,选择Create Project 然后是选择QT GUI application 然后自己命名工程,然后选择Widget;然后一路next;
我们的项目使用的是Widget,读者可以根据需要自己选择,他们直接的不同请谷歌.
2.在.h文件中声明一个label,注意之前先#include 相关类
#ifndefWIDGET_H
#defineWIDGET_H
#include<QWidget>
#include"QLabel"//必须包含label文件
namespaceUi{
classWidget;}
classWidget:
publicQWidget
{Q_OBJECT
public:
explicit Widget(QWidget*parent=0);
~Widget();
private:
Ui::Widget*ui;
QLabel*label;};//声明label变量
#endif//WIDGET_H
3.当然,你也可以在工程中声明label
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
label = new QLabel(tr("Hello World"), this);//实现label
label->move(0, 100);//设置label的坐标
QLabel *label2 = new QLabel(tr("QT项目Demo"), this); //也可以在.方法中声明对象
label2->move(100, 100);//设置label2的坐标
ui->setupUi(this);
}
Widget::~Widget()
{
delete ui;
}
4.还有是关于main.cpp中:
6.如图
#include <QtGui/QApplication>
#include "widget.h"
#include <QtCore/QTextCodec>//注意包括头文件!
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTextCodec::setCodecForTr(QTextCodec::codecForName("gb2312"));//防止程序出现乱码
Widget w;
w.show();
return a.exec();
}
最后我们的Demo就ok了然后在废话几句,①装有vc的用户注意,如果hello程序都运行不起来,甚至新建项目都不能运行,那么你要考虑一下看看你电脑的环境变量了,具体本人忘了谷歌②如若出现*******exit ****1一行错误,不能run则是你的前一个工程还在内存,如若在任务栏看不到,去任务管理器找相关进程kill③QtCreater始终不如Ecplise,有些错误不好找,希望大家有耐心,程序员当然必须有耐心