Qt5开发及实例学习

1、建立QtGui应用,项目名称test,基类"QDialog", 类名保持Dialog,选择"创建界面"

2、双击dialog.ui,打开Qt设计器,中间的空白视窗就是ParentWidget,接着需要建立一些ChildWidget。在工具箱中找到需要的Widget:Label,LineEdit[输入文件],HorizontalSpacer和两个PushButton[默认1个]。

3、设置widget的属性

  • 选择Label,确定ObjectName为"label",设置text属性为"&CellLocation:"
  • 选择LineEdit,确定ObjectName为"lineEdit"
  • 选择第一个按钮,确定ObjectName为"okButton",设置text属性为"OK", enabled属性为"false",default属性"true"
  • 选择第2个按钮,确定ObjectName为"cancelButton",设置text属性为"Cancel"
  • 将表单背景window Title属性设为"Go To Cell"

349d214c6881c3e2c4f689896ef082c55d0.jpg

4、运行工程·,则界面中的label会显示&

2c9fa6f37db0e759056fa3990082b708494.jpg

选择"编辑伙伴Buddsies"命令,在此模式下,可以设置伙伴

5aa83287bb2c0f995d91a84c6e136583261.jpg

选择label并拖到lineEdit,然后放开,这时候会有一个红色箭头label->lineEdit。

再次运行程序,label中的&不再出现,此时label和lineEdit这两个Widget互为伙伴。选择"编辑伙伴Buddsies",既可离开此模式,回到原本的编辑模式

1199eab0202ef7afe6dd22c34e4dc3b6624.jpg

5、对Widget进行位置编排的布局LayOut

  • 利用ctrl键一次选取多个widget,首先选取label与lineEdit,接着单击上面的水平布局按钮。然后选取spacer和两个pushButton,水平按钮布局:

816dd35a6f8b34573c7a88e7f2fd8c0f4f9.jpg

  • 选取整个form,不选取任何项目,垂直布局

22e67aee6a9164c4519f75e0fca07e2ba59.jpg

  • 选择上方的调整大小按钮,整个表单就自动调整为合适的大小,此时,出现红色的线将Widget框起来,被框起来的    Widget表示已经被选定为某种布局了

331024deeb46d24fd47c405bd5119e51793.jpg

6、单击编辑[Tab]键顺序按钮,每个widget上都会出现一个方框显示数字,表示安装Tab键的顺序,调整到需要顺序,然后回到编辑模式

a2094681a1551bf488f261dff77a23882dd.jpg

运行程序效果此时为:

9434effe718cb7488f3e988689c792bc0f7.jpg

7、在头文件"dialog.h"中的dialog类声明中添加语句

private slots:
    void on_lineEdit_textChange();

8、在源文件"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
}

 

转载于:https://my.oschina.net/u/3919756/blog/1934864

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值