用 Qt4 Designer 配合程序设计

来源:互联网 发布:中国软件开发公司排名 编辑:程序博客网 时间:2024/05/16 10:53

 

做个查找窗口界面。

 创建一个目录,名为 myfind

cd /root/learn/qt4

mkdir myfind

cd myfind

打开 qt4 designer 点击菜单 Applications -> Programming -> Qt4 Designer 在 New Form 窗口里选择 Widget,如下图所示 

 拖放以下几个控件放入 Form 里,如下图所示: 

 从上至下,从左至右依次放的是:

Label, Line Edit, Horizontal Spacer, Push Button, Push Button

修改一下它们的属性 把 Form 的 text 改为 Find Text,把它的 objectName 改为 FormFindText 把 label 的 text 改为 Text to find 把两个按钮的 objectName 分别改为 pbnOK, pbnCancel,并把它们的 text 属性分别改为 OK,Cancel

添加 Layout 选中 label 和 lineEdit,选择菜单 Form -> Lay Out Horizontally 选中 Horizontal Spacer 和那两个按钮,选择菜单 Form -> Lay Out Horizontally 然后什么都不选,右键点击窗体空白处,选择菜单 Lay out -> Lay Out Vertically 如下图所示

保存窗体

点 File -> Save Form,把它存到 myfind 目录里,命名为 myfinddialog.ui。

编写启动函数(main)

打开 KDevelop,在 myfind 目录中新建文件 myfind.cpp,输入如下代码:

#include <QApplication>

#include <QDialog>

#include "ui_myfinddialog.h"

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

{

       QApplication app(argc, argv);

       Ui_FormFindText ui;

       QDialog *dialog = new QDialog;

       ui.setupUi(dialog);

       dialog->show();

       return app.exec();

}

编译运行

cd /root/learn/qt4/myfind

qmake-qt4 -project

qmake-qt4

make

./myfind 会得到下面的窗口: 

加入几个事件

下面实现这个功能:当文本框中有输入的时候才让 OK 按钮有效,默认认它无效。

先把 pbnOK 按钮的 enabled 属性设置为 false,把 default 设为 true,然后加入 myfinddialog.h 和 myfinddialog.cpp,源代码分别如下所示:

 

// myfinddialog.h

#ifndef MY_FINDDIALOG___H #define MY_FINDDIALOG___H

#include <QDialog>

#include "ui_myfinddialog.h"

class MyFindDialog : public QDialog, public Ui_FormFindText

{

     Q_OBJECT public: MyFindDialog(QWidget *parent = 0);

     private slots: void on_textChanged();

};

#endif //

 

myfinddialog.cpp

#include <QtGui>

#include "myfinddialog.h"

MyFindDialog::MyFindDialog(QWidget *parent) : QDialog(parent)

{

      setupUi(this);

      connect(pbnOK, SIGNAL(clicked()), this, SLOT(accept()));

      connect(pbnCancel, SIGNAL(clicked()), this, SLOT(reject()));

      connect(lineEdit, SIGNAL(textChanged(const QString &)), this, SLOT(on_textChanged()));

}

 

void MyFindDialog::on_textChanged()

{

       pbnOK->setEnabled(lineEdit->hasAcceptableInput());

}

修改启动函数内容

如下所示

 

#include <QApplication>

#include "myfinddialog.h"

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

{

          QApplication app(argc, argv);

          MyFindDialog dialog;

          dialog.show();

          return app.exec();

}

 

重新编译运行

使用 qmake-qt4 重新生成工程文件 *.pro 和 makefile 文件,编译运行,随便在文本框里输入些东西,观察效果。

 

原创粉丝点击