QT学习日志(一)

来源:互联网 发布:什么驱动软件最好 编辑:程序博客网 时间:2024/06/10 19:47

原帖:http://blog.sina.com.cn/s/blog_60b8ee7b0100i4ii.html?retcode=0

 

学习学习QT,先说简单的图形界面编程吧。

今天实现的是一个简单的用户名密码验证登录界面,效果图如下:

QT学习日志(一)

实现功能:

1.密码验证功能,如果用户名密码正确(为链接数据库),login通过accept信号进入主界面;如果验证不正确通过MessageBox显示warning信息。

2.Exit退出程序(登录界面)。

3.附加功能:密码输入实现打点隐私功能;再次输入实现再次定位功能。

简单记录下实现步骤:

1.先新建Qt4 Gui Application工程,工程名为mainWidget,选用QWidget作为Base class,这样便建立了主窗口。文件列表如下:

QT学习日志(一)

2.然后新建一个Qt Designer Form Class类,类名为loginDlg,选用Dialog without Buttons,将其加入上面的工程中。文件列表如下:

QT学习日志(一)

3.在logindlg.ui中设计下面的界面:行输入框为Line Edit。其中用户名后面的输入框在属性中设置其object Name为usrLineEdit,密码后面的输入框为pwdLineEdit,登录按钮为loginBtn,退出按钮为exitBtn。

QT学习日志(一)

4.将exitBtn的单击后效果设为退出程序,关联如下:

QT学习日志(一)

5.右击登录按钮选择go to slot,再选择clicked(),然后进入其单击事件的槽函数,写入一句

    void loginDlg::on_loginBtn_clicked()
{
    accept();
}

6.改写main.cpp:

#include <QtGui/QApplication>
#include "widget.h"
#include "logindlg.h"
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    loginDlg login;
    if(login.exec()==QDialog::Accepted)
    {
        w.show();
        return a.exec();
    }
    else return 0;
}

7.这时执行程序,可实现按下登录按钮进入主窗口,按下退出按钮退出程序。

8.添加用户名密码判断功能。将登陆按钮的槽函数改为:

void loginDlg::on_loginBtn_clicked()

{

if(m_ui->usrLineEdit->text()==tr("qt")&&m_ui->pwdLineEdit->text()==tr("123456"))

//判断用户名和密码是否正确

accept();

else{

QMessageBox::warning(this,tr("Warning"),tr("user name or password error!"),QMessageBox::Yes);

//如果不正确,弹出警告对话框

}

 

}

并在logindlg.cpp中加入#include <QtGui>的头文件。如果不加这个头文件,QMessageBox类不可用。

9.这时再执行程序,输入用户名为qt,密码为123456,按登录按钮便能进入主窗口了,如果输入错了,就会弹出警告对话框。

10.在logindlg.cpp的loginDlg类构造函数里,添上初始化语句,使密码显示为小黑点。

loginDlg::loginDlg(QWidget *parent) :

QDialog(parent),

m_ui(new Ui::loginDlg)

{

m_ui->setupUi(this);

m_ui->pwdLineEdit->setEchoMode(QLineEdit::Password);

}

效果如下:

QT学习日志(一)

11.如果输入如下图中的用户名,在用户名前不小心加上了一些空格,结果程序按错误的用户名对待了。

QT学习日志(一)

我们可以更改if判断语句,使这样的输入也算正确。

void loginDlg::on_loginBtn_clicked()

{

if(m_ui->usrLineEdit->text().trimmed()==tr("qt")&&m_ui->pwdLineEdit->text()==tr("123456"))

accept();

else{

QMessageBox::warning(this,tr("Warning"),tr("user name or password error!"),QMessageBox::Yes);

}

 

}

加入的这个函数的作用就是移除字符串开头和结尾的空白字符。

 

12.最后,如果输入错误了,重新回到登录对话框时,我们希望可以使用户名和密码框清空并且光标自动跳转到用户名输入框,最终的登录按钮的单击事件的槽函数如下:

void loginDlg::on_loginBtn_clicked()

{

if(m_ui->usrLineEdit->text().trimmed()==tr("qt")&&m_ui->pwdLineEdit->text()==tr("123456"))

//判断用户名和密码是否正确

accept();

else{

QMessageBox::warning(this,tr("Warning"),tr("user name or password error!"),QMessageBox::Yes);

//如果不正确,弹出警告对话框

m_ui->usrLineEdit->clear();//清空用户名输入框

m_ui->pwdLineEdit->clear();//清空密码输入框

m_ui->usrLineEdit->setFocus();//将光标转到用户名输入框

}

 

}

---------------------------------------------------------------以上步骤参考教程

原创粉丝点击