Qt学习笔记1:初步认识控件

来源:互联网 发布:soap rest 知乎 编辑:程序博客网 时间:2024/06/05 20:30

           初步学习Qt编程,做的第一个小例子,记录下来,鼓励自己大笑

第一步,建立项目文件,基类选择“QDialog”。

第二步,采用自带的界面设计器来设计界面,双击dialog.ui,进入界面设计器Qt Designer编辑状态。具体内容不详细介绍了。

设计好的界面如下图所示:


第三步,“dialog.h”代码

#ifndef DIALOG_H#define DIALOG_H#include <QDialog>namespace Ui {class Dialog;}class Dialog : public QDialog{    Q_OBJECTpublic:    explicit Dialog(QWidget *parent = 0);    ~Dialog();private:    Ui::Dialog *ui;private slots:    void on_lineEdit_textChanged();};#endif // DIALOG_H
其中:void on_lineEdit_textChanged()表示信号和槽自动关联,由字符on和发射信号的部件lineEdit和信号函数textChanged组成,改变文本编辑框内容信号QLineEdit::textChange(QString)产生后,会与Dialog::on_LineEdit_textChange()槽关联起来。

#include "dialog.h"#include "ui_dialog.h"Dialog::Dialog(QWidget *parent) :    QDialog(parent),    ui(new Ui::Dialog){    ui->setupUi(this);    QRegExp regExp("[A-Za-z][1-9][0-9]{0,2}");    ui->lineEdit->setValidator(new QRegExpValidator(regExp,this));    connect(ui->okButton,SIGNAL(clicked()),this,SLOT(accept()));    connect(ui->cancelButton,SIGNAL(clicked()),this,SLOT(reject()));}Dialog::~Dialog(){    delete ui;}void Dialog::on_lineEdit_textChanged(){     ui->okButton->setEnabled(ui->lineEdit->hasAcceptableInput());}
其中:ui->setupUi(this);会自动建立下列的signal-slot的连接:connect(lineEdit, SIGNAL(textChanged(const QString &)), this, SLOT(on_lineEdit_textChanged()));

QRegExp regExp ("[A-Za-z][1-9][0-9]{0,2}");是正则表达式,括号内的内容描述的是“字符串”的特征,验证另一个“字符串”是否符合这个特征,此处的特征为第一个数必须为字母A-Z或者a-z,即大小写均可;第二个为1-9的数字;再接0-2位0-9范围内的数字。

on_lineEdit_textChanged()是实现槽函数,此槽函数会根据输入的文字是否有效来启用或停用“OK”按钮。

原创粉丝点击