您的位置:首页 > 编程语言 > Qt开发

用两种方法教你从零创建Qt对话框程序

2010-05-20 17:44 411 查看
作者:冯利美,华清远见嵌入式学院讲师。
本文用两种方法从零教您实现〈C++ GUI Qt4 编程(第二版)〉上的一个经典案例。
第一种方法是使用Qt Creator来设计对话框的外观,然后手工写代码,实现功能。此方法,对于初学者来说,能够很好的理解Qt程序的基本原理,为深入学习Qt打下一个很好的基础。
第二种方法是完全借助于Qt Creator完成程序。此方法,对于初学者来说,能够快速的完成一个对话框程序,从而激发出学者才兴趣。
一、 Qt Creator仅用来设计Form外观
1) 创建窗体
FileànewàQt Designer FormàWidget

选择路径

命名为gotocelldialog.ui
2) 创建子窗口部件
文本标签:objectName的属性是”label”,text的属性是”&Cell Location”

行编辑器:objectName—lineEdit

按钮: objectName—okButton, enabled—false, text—OK, default—true

按钮: objectName—cancelButton, text—Cancel,

选中窗体: objectName—GoToCellDialog, windowTitle—Go to Cell

插入分隔符

EditàEdit Buddies,单击标签并把红色箭头拖到行编辑器中
3) 摆放窗体部件
选择label和lineEdit ,单击FormàLay Out Horizontally

选择分隔符、OK按钮和Cancel按钮,单击FormàLay Out Out Horizontally

单击窗体中空白处,取消对所有已选中项的选择,单击FormàLay Out Vertically

单击FormàAdjust Size, 重新把窗体的大小定义为最佳形式
4) 设置Tab键顺序
可以按照你所希望的接受焦点的顺序,单击每一个窗口部件,然后点击Edt-->Edit Widgets,离开Tab键顺序设置模式。
5) 在同一目录下创建main.cpp,内容如下:
QApplication app(argc, argv);

Ui::GoToCellDialog ui;

QDialog *dialog = new QDialog;

ui.setupUi(dialog);

dialog->show();

return app.exec();
6) 用命令行的方式,执行qmake命令,将生成pro文件和Makefile文件
qmake -project -o gotocelldialog.pro
7) 为对话框添加功能
创建一个新类,使其同时从Qdialog和Ui::GoToCellDialog中继承,命名惯例是:将该类与uic所生成的类具有相同的名字,只是没有Ui::前缀而已。
创建gotocelldialog.h文件

#ifndef GOTOCELLDIALOG_H

#define GOTOCELLDIALOG_H

#include <QDialog>

#include "ui_gotocelldialog.h"

class GoToCellDialog : public QDialog, public Ui::GoToCellDialog

{

Q_OBJECT

public:

GoToCellDialog(QWidget *parent = 0);

private slots:

void on_lineEdit_textChanged();

};

#endif
创建gotocelldialog.cpp文件

include <QtGui>

#include "gotocelldialog.h”

GoToCellDialog::GoToCellDialog(QWidget *parent) : QDialog(parent)

{

setupUi(this);

QRegExp regExp("[A-Za-z][1-9][0-9]{0,2}");

lineEdit->setValidator(new QRegExpValidator(regExp, this));

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

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

}

void GoToCellDialog::on_lineEdit_textChanged()

{

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

}
8) 重写main.cpp
QApplication app(argc, argv);

GoToCellDialog *dialog = new GoToCellDialog;

dialog->show();

return app.exec();
9) 运行程序

ctrl+r

或者

qmake –project –o gotocelldialog.pro

qmake

./gotocelldialog
二、直接用Qt Creator 创建Gui工程
1) 建立GUI工程
● File-->new-->Qt4 Gui Application

● 选择路径

● 命名为gotocelldialog.pro

● 选择基类Qdialog, 类名GoToCellDialog,
2)3)4)步骤同前
5) 修改gotocelldialog.cpp中的构造函数GoToCellDialog
ui->lineEdit->setValidator(new QRegExpValidator(regExp, this));

connect(ui->okButton, SIGNAL(clicked()), this, SLOT(accept()));

connect(ui->cancelButton, SIGNAL(clicked()), this, SLOT(reject()));

备注:此时访问部件,需要通过指针ui。
6) 修改gotocelldialog.h,在类中加入自定义的槽函数原型
private slots:

void on_lineEdit_textChanged()
7) 在gotocelldialog.cpp中加入实现
void GoToCellDialog::on_lineEdit_textChanged()

{

ui->okButton->setEnabled(ui->lineEdit->hasAcceptableInput());

}
备注:本文的部分内容参考了〈C++ GUI Qt4 编程(第二版)〉,特此声明,并表示感谢。
如果您喜欢这篇文章,可以加华清远见老师为好友,单击以下链接即可:

http://student.csdn.net/invite.php?u=45153&c=8af704eb3cd8e773

(作者:华清远见嵌入式培训中心 www.embedu.org www.farsight.com.cn
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: