用两种方法教你从零创建Qt对话框程序
2010-05-20 17:29
405 查看
作者:冯利美,华清远见嵌入式学院讲师。
本文用两种方法从零教您实现〈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 编程(第二版)〉,特此声明,并表示感谢。
本文用两种方法从零教您实现〈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 编程(第二版)〉,特此声明,并表示感谢。
相关文章推荐
- 用两种方法教你从零创建Qt对话框程序
- 用两种方法教你从零创建Qt对话框程序
- 实现自定义对话框程序快捷键的两种方法
- 在C#.net中做页面上传的程序。用Dhtml的控件:(创建文件上载控件,该控件带有一个文本框和一个浏览按钮。)和类HtmlInputFile的两种方法
- Qt打开外部程序的三种方法(两种阻塞,一种不阻塞)
- 【转】QT创建子对话框的方法
- 实现自定义对话框程序快捷键的两种方法
- 创建程序的两种方法
- 两种方法:VS2008下C++窗体程序显示控制台的方法——在QT程序中使用cout和cin
- 实现自定义对话框程序快捷键的两种方法
- QT c++程序使用qml的两种方法
- Qt学习(七) QMessageBox弹出的对话框关闭后,整个程序退出的解决方法
- 实现自定义对话框程序快捷键的两种方法
- QT c++程序使用qml的两种方法
- Qt创建对话框的三种方法
- (转载)C++创建对象的两种方法
- ios 单例模式创建两种方法
- Qt程序打包发布方法(使用官方提供的windeployqt工具)
- Qt程序打包发布方法(使用官方提供的windeployqt工具)
- MFC对话框程序 屏蔽ESC和ENTER键关闭对话框的方法