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

本文用两种方法从零教您实现〈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 编程(第二版)〉,特此声明,并表示感谢。


FROM: http://tieba.baidu.com/p/1082136376


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值