当前位置:文档之家› QT应用程序设计

QT应用程序设计

南昌航空大学实验报告
二00 一四年五月十四日
课程名称:嵌入式系统设计及应用实验名称:QT应用程序设计
班级:姓名:同组人:
指导教师评定:签名:
一、实验内容
1. 阅读QT主窗口程序helloworld.cpp,然后编译并运行。

2.在helloworld.cpp程序中增加一个名为“hello”的按钮。

3. 编写一个登陆对话窗程序
二、实验步骤
(一)helloword程序
1.我们用File->New菜单来新建工程。

2这里我们选择Qt4 Gui Application。

3下面输入工程名和要保存到的文件夹路径。

我们这里的工程名为helloworld。

4这时软件自动添加基本的头文件,因为这个程序我们不需要其他的功能,所以直接点击Next。

5.我们将base class选为QDialog对话框类。

然后点击Next。

6点击Finish,完成工程的建立。

7我们可以看见工程中的所有文件都出现在列表中了。

我们可以直接按下下面的绿色的run按钮或者按下Ctrl+R快捷键运行程序。

(二)登陆对话框程序
1.先新建Qt4 Gui Application工程,工程名为mainWidget,选用QWidget作为
Base class,这样便建立了主窗口
2.然后新建一个Qt Designer Form Class类,类名为loginDlg,选用Dialog without
Buttons,将其加入上面的工程中
3.在logindlg.ui中设计下面的界面:行输入框为Line Edit。

其中用户名后面的输入
框在属性中设置其object Name为usrLineEdit,密码后面的输入框为pwdLineEdit,登录按钮为loginBtn,退出按钮为exitBtn。

4.将exitBtn的单击后效果设为退出程序,关联如下:
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(“1 23456″)) //判断用户名和密码是否正确
accept();
else{
QMessageBox::warning(this,tr(“Warning”),tr(“user name or password error!”),QMessageBox::Yes); //如果不正确,弹出警告对话框
}}
9.这时再执行程序,输入用户名为qt,密码为123456,按登录按钮便能进入主窗口了,如果输入错了,就会弹出警告对话框。

10.如果输入错误,便会弹出警告提示框
11.在logindlg.cpp的loginDlg类构造函数里,添上初始化语句,使密码显示为小黑点。

loginDlg::loginDlg(QWidget *parent) : QDialog(parent), m_ui(new Ui::loginDlg) {
m_ui->setupUi(this);
m_ui->pwdLineEdit->setEchoMode(QLineEdit::Password);
}
12.如果输入如下图中的用户名,在用户名前不小心加上了一些空格,结果程序按错误的用户名对待了。

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

void loginDlg::on_loginBtn_clicked() {
if(m_ui->usrLineEdit->text().trimmed()==tr(“qt”)&&m_ui->pwdLineEdit->tex t()==tr(“123456″)) accept();
else{
QMessageBox::warning(this,tr(“Warning”),tr(“user name or password error!”),QMessageBox::Yes);
}}
13.最后,如果输入错误了,重新回到登录对话框时,我们希望可以使用户名和密码框清空并且光标自动跳转到用户名输入框,最终的登录按钮的单击事件的槽函数如下:void loginDlg::on_loginBtn_clicked()
{
if(m_ui->usrLineEdit->text().trimmed()==tr(“qt”)&&m_ui->pwdLineEdit->tex t()==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();//将光标转到用户名输入框}}
三、实验结果
Hello world程序运行结果
密码为文本输入框的密码错误弹出对话框
密码输入为密码输入框的用户名中前面有空格
四、实验分析
通过此次试验我知道了如何使用QT软件,且用C++实现简单的用户界面程序,知道QT 所能够应用的场合,QT是一个很好的嵌入式用户界面程序,因为它所需要占用的资源比较少,QT的信号与槽机制使得事件相应机制非常的好,在编写这次实验的小程序时,出现了几个错误,但解决之后才发现是很简单的,只是因为自己比较粗心而造成的。

相关主题