使用QT设计师设计的窗口部件,用uic 工具可以转换成C++代码:
(1)首先用QT设计师设计一个窗口,选择一个英文目录下,保存为gotocelldialog.ui
我的文件保存在:F:\qt-program\gotocell
(2)在该目录下创建一个 main.cpp 文件,内容如下:
#include <QApplication>#include <QDialog>#include "ui_gotocelldialog.h"int main(int argc,char *argv[]){QApplication app(argc,argv);Ui::GoToCellDialog ui;QDialog *dialog = new QDialog;ui.setupUi(dialog);dialog->show();return app.ecec();}
(3)使用 qmake 工具
打开Qt Command Prompt
-> f: // 回车,可以进入F盘
->cd qt-program\gotocell // 回车进入我保存文件的目录
->dir // 查看该目录下的所有文件
->qmake -project // 生成 gotocell.pro 文件
->qmake gotocell.pro // 生成 makefile 文件
-> uic gotocelldialog.ui -o ui_gotocelldialog.h // -o 用来制定目标文件,生成指定的ui_gotocelldialog.h
创建两个文件:
gotocelldialog.h
#ifndef GOTOCELLDIALOG_H#define GOTOCELLDIALOG_H#include <QDialog>#include "ui_gotocelldialog.h"// GoToCellDialog 继承自两个类class GoToCellDialog:public QDialog,public Ui::GoToCellDialog{Q_OBJECTpublic: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); // 初始化窗体// 允许一个大写或者小写字母,后面跟一个范围1-9的数字,,后面再跟0个,1个,2个0-9的数字QRegExp regExp("[A-Za-z][1-9][0-9]{0,2}"); // 正则表达式lineEdit->setValidator(new QRegExpValidator(regExp,this)); // validator n 验证器connect(okButton,SIGNAL(clicked()),this,SLOT(accept())); // 设置QDialog::Accepted 为1connect(cancelButton,SIGNAL(clicked()),this,SLOT(reject())); // 设置QDialog::Regected 为0}void GoToCellDialog::on_lineEdit_textChanged(){okButton->setEnabled(lineEdit->hasAcceptableInput());}
main.cpp 文件的修改
#include <QApplication>//#include <QDialog>//#include "ui_gotocelldialog.h"#include "gotocelldialog.h"int main(int argc,char *argv[]){QApplication app(argc,argv);//Ui::GoToCellDialog ui;//QDialog *dialog = new QDialog;//ui.setupUi(dialog);//dialog->show();GoToCellDialog *dialog = new GoToCellDialog;dialog->show();return app.exec();}—>qmake -project
—>qmake gotocell.pro
—>mingw32-make
—>cd debug
—>gotocell.exe
参考书籍:
《C++ GUI Qt 4 编程》(第二版)
孤单不是与生俱来,而是由你爱上一个人的那一刻开始。