QT应用程序设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
南昌航空大学实验报告
二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
#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程序运行结果