Desinger
是一个可视化的工具,尤其可以使布局简单,不过总有强人告诉我直接用代码更好~o(╯□╰)o
还是先来学习这个吧。
无论用编写代码的方式还是用Qt Designer,创建对话框都有如下基本的步骤:
1、创建和初始化子控件。
2、把子控件放到布局管理器中。
3、设置tab顺序。
4、创建信号和槽。
5、实现对话框的自己的槽函数。
然后我们设计一个有个textlabel,一个lineEdit,一个分隔符,2个pushbutton的小对话框,其中按钮一个是okButton和cancelButton把对话框设计好以后,保存为.ui文件。其中制作过程可以参考那本with Qt 4(宝书)。然后用文本编辑器写一个main.cpp放到同一文件夹下。
这段要说一下了,我们可以直接我creator,但是为了了解qmake,先这么做。
#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.exec();
}
这段代码以后也要修改。
然后运行qmake
现在来了解qmake,qmake是个什么东西呢,qmake可以使你的纯文本编译的代码生成.pro文件,然后再生成Makefile。之后也可以生成.exe。就是说qmake自动帮你完成了编译器要完成的功能。我们用creator来做其实是一样的顺序。只不过界面更加友好简便了。
那么在控制台下(windows)
我推荐用Qt Command Prompt,不用设置太麻烦的环境变量,还可以在其中输入-edit直接来写代码。
环境变量的设置见后面的附录
qmake -project
qmake ***.pro
就可以了,qmake非常的天才,可以自动检测ui并且转化成等价的头文件。
然后我们run一下发现可以看,就是不能用。然后就这本书就创建一个新类,此类继承自QDialog和ui,实现功能,废话少说。代码如下
gotocelldialog.h
#ifndef COTOCELLDIALOG_H
#define GOTOCELLDIALOG_H
#include <QDialog>
#include "ui_gotocelldialog.h"
class GoToCellDialog : public QDialog, public Ui::GoToCellDialog//继承了2个
{
Q_OBJECT
public:
GoToCellDialog(QWidget *parent = 0);
private slots:
void on_lineEdit_textChanged();//如果用on_objectName_signalName()命名的任意槽与相应的objectName()的signalName()
//自动连接这是很方便的一种机制。
};
#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());
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
最后我们修改的main.cpp
#include<QApplication>//#include<QDialog>
#include"gotocelldialog.h"int main(int argc , char *argv[]){
QApplication app(argc, argv);GoToCellDialog *dialog = new GoToCellDialog;//ui.setupUi(dialog);
dialog->show();return app.exec();}
然后我们一样
qmake -projectqmake ***pro之后我们就可以看到一个很不错的对话框了。但是我还是推荐用creator的方式来写,因为这个要是写错了,根本不知道那里有的问题。不过这么先这么写一下,了解一下以后是有用的。附录:我就是照着这个来弄的。不过我一直用的是Qt Command Prompt。
推荐用这个哈。