用两种方法教你从零创建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 编程(第二版)〉,特此声明,并表示感谢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值