【Qt学习笔记】001 基础篇——多窗口&登录界面

来源:互联网 发布:linux网络接口详解 编辑:程序博客网 时间:2024/05/21 14:42

多窗口程序教程链接

登录对话框教程链接

由实例切入,打开新世界的大门,可能笔记做的不是很系统,但是是一个萌新不断发现的过程。


和VS的MFC的项目管理界面很类似,把各个类型的文件统一做了分类。

以main.cpp为例 因为其余的程序都还没能读懂

#include "mainwindow.h"#include <QApplication>#include "logindialog.h"int main(int argc, char *argv[]){    QApplication a(argc, argv);    MainWindow w;    LoginDialog dlg;    if (dlg.exec() == QDialog::Accepted)    {        w.show();        return a.exec();    }    else return 0;}
/*在Qt中选中语句按F1就可以查阅该语句的功能,类似MATLAB的帮助文档 说好的中文呢*/

QApplication类管理GUI应用的所有控制流和主要设置。第一条新建了一个QApplication的对象a,此后对整个GUI的控制应该都可以通过a中的函数来实现。

MainWindow类 和 LoginDialog 类是实在头文件中.h文件中定义,随着新建一个对话框自动生成的一个类,同样建立对象w和dlg自动与对话框交互(具体机理并不是很清楚),初步断定这两个类都是基于QDialog派生出来的。

exec()函数,激活模态对话框,返回值Accepted或者Rejected(这里应该是一个“槽”的概念)

也就是说,在主界面中,首先激活登录界面dlg,等待其返回值为Accepted时才激活主界面。

在LoginDialog.cpp中,进行条件判断,满足条件即用户名密码匹配正确,则向信号槽中注入Accepted(姑且这么说,并没有考证)

#include "logindialog.h"#include "ui_logindialog.h"#include <QMessageBox>LoginDialog::LoginDialog(QWidget *parent) :    QDialog(parent),    ui( ){    ui->setupUi(this);}LoginDialog::~LoginDialog(){    delete ui;}void LoginDialog::on_loginBtn_clicked(){    if(ui->usrLineEdit->text().trimmed() == tr("wanglingyu") &&            ui->pwdLineEdit->text() == tr("123456"))    {        accept();    }    else{        QMessageBox::warning(this,tr("Waring"),                             tr("user name or password error!"),                             QMessageBox::Yes);        ui->usrLineEdit->clear();        ui->pwdLineEdit->clear();        ui->usrLineEdit->setFocus();    }}
这里ui应该是对话框类的对象,通过setupUi将当前对话框的指针指向该对象,再通过ui对象的函数操作对当前对话框中的元件进行定义。

ui->usrLineEdit->text().trimmed()
这句话充分显示了ui的用法,usrLineEdit是LoginDialog对话框中的一个文本框,其ObjectName被修改为usrLineEdit,每个环节都是一个对象(具体哪个类有待深入学习),text()返回值是文本框中的字符串,trimmed()的作用是删除字符串前后的空白字符。当该语句通过时,则注入Accepted,进入主界面。




0 1