Qt实例1 - 查找框(1)组装零件

前言

学一个东西必须得去实践,而且如果实践出来的东西还有趣味性的话,会大大增加学习的动力。我刚接触Qt不久,准备在自学的过程中把自己写的实例一一记录下来。

好了,不扯了,今天要做一个查找框,就是大家用的编辑器里的那种最普通的查找框,先看下效果图大概是啥样的:

 

好,看完了我们开始做。至于Qt的安装这里就不赘述了,度娘会告诉你,而且也不算复杂。


1.建立项目

填写项目位置,随便起个都行。这里就叫dialog吧。下一步,下一步。来到编辑类信息的时候,修改基类为QDialog,类名为FindDialog,把创建界面那个勾去掉,下一步,完成。打开Qt Creator,文件-新建,选择Qt控件项目-Qt Gui应用,确定。

这时候我们可以看下里面都有什么文件:

有个.pro文件,还有个.h头文件,还有两个cpp源文件。

打开.pro文件你可以看到里面保存的是一些配置信息。

dialog.cpp里面是类的声明。

main.cpp是程序的主入口,他把dialog.h头文件包含了进来,然后实例化,显示,然后从那句a.exec()开始进入事件循环。

 

2.添加组件

好了,我们建好相应的文件现在开始写代码吧,你不会是以为现在就大功告成了吧?哈哈。。。你可以点击那个绿色的播放按钮运行看看,可能是类似这个样子的(不同的操作系统样子不同):

里面什么东西都没有,那。。。都要写什么呢?想下查找框都有什么部件?有文字,有文本框,有按钮,差不多就这几个。

修改dialog.h文件:

#ifndef FINDDIALOG_H
#define FINDDIALOG_H

#include <QtGui/QDialog>
//先声明需要用到的组件,告诉编译器这些类是存在的,而不必关注太多细节。
class QLabel;//文字
class QLineEdit;//文本框
class QPushButton;//按钮
class QHBoxLayout;//用于布局的层


class FindDialog : public QDialog
{
    Q_OBJECT
    
public:
    FindDialog(QWidget *parent = 0);//构造函数
    ~FindDialog();//析构函数

private:
  //前置声明一些部件 QLabel *searchLabel; QLineEdit *searchLineEdit; QPushButton *searchButton; QHBoxLayout *layout; void init(); }; #endif // FINDDIALOG_H

 

dialog.cpp:

#include "finddialog.h"

//把需要用到的组件加进来
#include <QLabel> #include <QLineEdit> #include <QPushButton> #include <QHBoxLayout> FindDialog::FindDialog(QWidget *parent) : QDialog(parent)//构造函数 { init();//初始化 } FindDialog::~FindDialog()//析构函数 { } void FindDialog::init(){ //一个文本标签,内容用tr包起来是为了方便国际化 searchLabel = new QLabel(tr("&Find what?")); //一个文本框 searchLineEdit = new QLineEdit(); //设置伙伴,当使用searchLabel的快捷键时,会自动focus到searchLineEdit上 searchLabel->setBuddy(searchLineEdit); //搜索按钮 searchButton = new QPushButton(tr("&Search")); //new一个水平层,把组件都加进去 layout = new QHBoxLayout; layout->addWidget(searchLabel); layout->addWidget(searchLineEdit); layout->addWidget(searchButton); //设置主layout为layout setLayout(layout); //到此为止我们把部件都加进去了 }

 

main.cpp不用改了,Qt Creator已经为我们写好了。此时我们点击绿色播放按钮。就可以看到先前的效果图啦。:)

怎么样?用Qt写控件很简单吧?不过点击搜索按钮还没有任何反应,只有关闭按钮才起反应,而且也没有内容可搜索,还有,那个tr怎么实现国际化?那么下一节我们就去实现这些功能吧!

posted @ 2013-01-09 22:26  pigfly  阅读(2199)  评论(2编辑  收藏  举报