Chinaunix首页 | 论坛 | 博客
  • 博客访问: 43924
  • 博文数量: 24
  • 博客积分: 920
  • 博客等级: 准尉
  • 技术积分: 235
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-05 11:10
文章分类
文章存档

2011年(1)

2010年(3)

2009年(20)

我的朋友
最近访客

分类: C/C++

2009-11-23 17:00:43

1、ubuntu下QT4开发环境的搭建
安装Qt4有两大问题,一是环境变量,二是IDE(集成开发环境)。安装Qt4也有两种办法,一种是apt-get,一种是下载(上传下载使用办法尽在mylove21.cn)源码包,而后一种办法已经人证实也许是最有不好使的方法。所以我最终采用了apt-get的方式。而apt-get也有两种方式(这便是Free OS之不爽之处)关于IDE,网上有人通过设置KDevelop跑起来Qt,但也不是非常的好使,关键时刻还是有找不到的头文件。QDevelop是Qt的官方IDE,据说跟Qt4配合得更好一些,所以我选用这个。
利用apt-get安装Qt4过程如下:
Ubuntu Linux下配置Qt4的步骤:
sudo apt-get install qt4-dev-tools qt4-doc qt4-qtconfig qt4-demos qt4-designer
qt4-dev-tools 包括了Qt Assistant及Qt Linguist等工具,因此不需要独自安装这两个工具。其余的,qt4-doc 是帮助文档,包括了Qt中各个类库的具体阐明以及丰富的例子程序,可以使用Qt Assistant 工具来打开阅读。qt4-qtconfig 是配置Qt环境的一个对话框,基本默认就行了,较少有必须去更改。qt4-demos 包括许多可以运行起来的可执行文件以及源代码。qt4-designer是用来设计GUI界面的设计器。
你要用QDevelop的话就sudo apt-get install qdevelop吧。
假如你用QDevelop的话,就直接启动它,你也许会发现提醒“Qt文件夹不存在”之类的提醒,这是因为有些工具还没有被安装,如 qmake,ctags之类,不要被小红叉吓倒,执行以下语句就可以:sudo apt-get install libqt4-dev。
有可能到这儿还有一个ctags的红叉,可以执行:apt-get install ctags,他会自动帮你查出来并装上,真是便利。然后环境变量不再提醒出错,你可以进入Qdevelop,尽情地coding吧!
为了连接MySQL数据库,需要安装连接MySQL的驱动程序:sudo apt-get install libqt4-sql-mysql
2、编写程序,体验QT
Hello程序
创建一个工程,然后书写main.cpp文件

#include

#include

int main(int argc, char *argv[])

{

QApplication a(argc, argv);

QLabel *label = new QLabel("Hello, world!");

label->resize(500,300);

label->show();

return a.exec();

}
运行结果:会弹出一个对话框,框中的内容是
Hello, world!
做一个小修改:
QLabel *label = new QLabel("

Hello, world!

");

你会看到Hello变色了

信号槽

#include "QtGui/QApplication"

#include "QtGui/QPushButton"

int main(int argc, char *argv[])

{

QApplication a(argc, argv);

QPushButton *button = new QPushButton("Quit");

QObject::connect(button,SIGNAL(clicked()),&a,SLOT(quit()));

button->resize(200,100);

button->show();

return a.exec();

}

组件布局

一、水平布局

#include "QtGui/QApplication"

#include "QtGui/QLabel"

#include "QtGui/QSpinBox"

#include "QtGui/QSlider"

#include "QtGui/QHBoxLayout"

int main(int argc, char *argv[])

{

QApplication app(argc, argv);

QWidget *window = new QWidget;

window->setWindowTitle("Enter your age");

QSpinBox *spinBox = new QSpinBox;

QSlider *slider = new QSlider(Qt::Horizontal);

spinBox->setRange(0, 130);

slider->setRange(0, 130);

QObject::connect(slider, SIGNAL(valueChanged(int)), spinBox, SLOT(setValue(int)));

QObject::connect(spinBox, SIGNAL(valueChanged(int)), slider, SLOT(setValue(int)));

spinBox->setValue(35);

QHBoxLayout *layout = new QHBoxLayout;

layout->addWidget(spinBox);

layout->addWidget(slider);

window->setLayout(layout);

window->show();

return app.exec();

}

二、垂直布局

#include

#include

#include

#include

#include

#include

int main(int argc,char *argv[])

{

QApplication app(argc,argv);

QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));

QWidget *pwidget=new QWidget;

QLabel label(pwidget);

label.setText(QObject::tr("同一个世界,同一个梦想!"));

QPushButton *btn=new QPushButton(QObject::tr("关闭"),pwidget);

QVBoxLayout *layout=new QVBoxLayout;

layout->addWidget(&label);

layout->addWidget(btn);

pwidget->setLayout(layout);

QObject::connect(btn,SIGNAL(clicked()),pwidget,SLOT(close()));

pwidget->show();

return app.exec();

}

Qt一共有三种主要的layout,分别是:

QHBoxLayout- 按照水平方向从左到右布局;

QVBoxLayout- 按照竖直方向从上到下布局;

QGridLayout- 在一个网格中进行布局,类似于HTML的table。

layout使用addWidget添加组件,使用addLayout可以添加子布局,因此,这就有了无穷无尽的组合方式
三、程序启动画面
多数应用程序启动时都会在程序完全启动前显示一个启动画面,在程序完全启动后消失。这是怎么做出来的呢?

首先创建一个工程,在dialogimpl.h中代码如下:

#ifndef DIALOGIMPL_H

#define DIALOGIMPL_H

#include

class MainWindow:public QMainWindow

{

Q_OBJECT

public:

MainWindow(QWidget *parent=0);

};

#endif

继续看,在dialogimpl.cpp中代码如下(这里主要是启动画面后程序的显示):

#include "dialogimpl.h"

#include "QTextEdit"

MainWindow::MainWindow(QWidget *parent):QMainWindow(parent)

{

setWindowTitle(tr("flash"));

QTextEdit *edit=new QTextEdit;

edit->setText("hello world!");

setCentralWidget(edit);

resize(1000,800);

sleep(3);

}

接下来看启动画面的部分,main.cpp中的代码如下:

#include

#include "dialogimpl.h"

#include

int main(int argc, char ** argv)

{

QApplication app( argc, argv );

         //此部分设置启动画面

QPixmap pixmap("/home/guo/QT/flash/src/1.jpg");

QSplashScreen *splash=new QSplashScreen(pixmap);

splash->show();

splash->resize(300,260);

app.processEvents();//使程序在显示启动画面的同时仍能响应鼠标等其他事件

MainWindow window;

window.show();

splash->finish(&window);//主窗体对象初始化完成后,结束启动画面

return app.exec();

}


阅读(904) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~