一、创建QtGui应用,项目名称test,基类"QDialog", 类名保持Dialog,选择"建立界面"函数
二、双击dialog.ui,打开Qt设计器,中间的空白视窗就是ParentWidget,接着须要创建一些ChildWidget。在工具箱中找到须要的Widget:Label,LineEdit[输入文件],HorizontalSpacer和两个PushButton[默认1个]。工具
三、设置widget的属性布局
四、运行工程·,则界面中的label会显示&ui
选择"编辑伙伴Buddsies"命令,在此模式下,能够设置伙伴this
选择label并拖到lineEdit,而后放开,这时候会有一个红色箭头label->lineEdit。spa
再次运行程序,label中的&再也不出现,此时label和lineEdit这两个Widget互为伙伴。选择"编辑伙伴Buddsies",既可离开此模式,回到本来的编辑模式设计
五、对Widget进行位置编排的布局LayOut3d
六、单击编辑[Tab]键顺序按钮,每一个widget上都会出现一个方框显示数字,表示安装Tab键的顺序,调整到须要顺序,而后回到编辑模式code
运行程序效果此时为:orm
七、在头文件"dialog.h"中的dialog类声明中添加语句
private slots: void on_lineEdit_textChange();
八、在源文件"dialog.cpp"中的构造函数中添加代码以下:
#include "dialog.h" #include "ui_dialog.h" #include <QRegExp> Dialog::Dialog(QWidget *parent) : QDialog(parent), ui(new Ui::Dialog) { ui->setupUi(this); //产生界面以后,setupUi将会根据naming convention对slot进行链接,即链接on_objectName_signalName()与 //ObectName中的siganlName的signal,也就是自动建立: connect(ui->lineEdit, SIGNAL(textChange(QString)), this, SLOT(on_lineEdit_textChange)); QRegExp regExp("[A-Za-z][1-9][0-9]{0,2}"); //限制字元输入的范围:只容许第一个字元输入大小写英文字母,后面接一个非0的数字,在接0-2位可为0的数字 ui->lineEdit->setValidator(new QRegExpValidator(regExp, this)); //设置值的类型 connect(ui->okButton, SIGNAL(clicked()), this, SLOT(accept())); //链接OK按钮到Dialog的accept()槽函数 connect(ui->cancelButton, SIGNAL(clicked()), this, SLOT(reject())); //accept和reject槽函数都会关闭Dialog视窗,可是accept会设置Dialog的结果至QDialog::Accepted(结果为1); //reject会设置Dialog的结果至QDialog::rejected(结果为1);所以能够根据这个结果设置按钮的是ok仍是cancel } Dialog::~Dialog() { delete ui; } void Dialog::on_lineEdit_textChange() { ui->okButton->setEnabled(ui->lineEdit->hasAcceptableInput()); //根据输入的文字是否有效来启用或者中止"OK"按钮 //QLineEdit::hasAcceptableInput()中使用构造函数中的Validator }