网站商城怎么做的,基于淘宝联盟的返利网站怎么做,北京网站建设成都公司,广州效果图制作公司作业#xff1a;
1.
完善登录框
点击登录按钮后#xff0c;判断账号#xff08;admin#xff09;和密码#xff08;123456#xff09;是否一致#xff0c;如果匹配失败#xff0c;则弹出错误对话框#xff0c;文本内容“账号密码不匹配#xff0c;是否重新登录”
1.
完善登录框
点击登录按钮后判断账号admin和密码123456是否一致如果匹配失败则弹出错误对话框文本内容“账号密码不匹配是否重新登录”给定两个按钮ok和cancel点击ok后会清除密码框中的内容继续进行登录如果点击cancel按钮则关闭界面。
如果账号和密码匹配则弹出信息对话框给出提示信息为“登录成功”,给出一个按钮ok点击ok后关闭整个登录界面跳转到其他界面
点击取消按钮后弹出问题对话框询问是否确定要退出登录给出两个按钮yes|no,点击yes则直接关闭整个登录界面如果点击no则进行进行登录
要求对象版和静态成员函数版至少各实现一个
pro文件
QT core guigreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c11# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES QT_DEPRECATED_WARNINGS# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES QT_DISABLE_DEPRECATED_BEFORE0x060000 # disables all the APIs deprecated before Qt 6.0.0SOURCES \main.cpp \second.cpp \widget.cppHEADERS \second.h \widget.h# Default rules for deployment.
qnx: target.path /tmp/$${TARGET}/bin
else: unix:!android: target.path /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS targetRESOURCES \photo.qrcFORMS \second.ui登录界面头文件
#ifndef WIDGET_H
#define WIDGET_H#include QWidget#include QLineEdit//行编辑器#includeQIcon//图标#includeQLabel//标签#includeQPushButton//按钮#includeQIcon//图标#includeQDebug//调试函数#includeQMessageBox//消息对话框class Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent nullptr);~Widget();QLabel *lab1;QLabel *lab2 ;QLabel *lab3 ;QLineEdit *dit1;QLineEdit *dit2 ;QPushButton *btn1;QPushButton *btn2;public slots:void btn1_slot(); //自定义一个按钮1的槽函数void btn2_slot(); // 自定义一个按钮2的槽函数
signals:void jump(); //定义跳转函数};
#endif // WIDGET_H跳转界面头文件
#ifndef SECOND_H
#define SECOND_H#include QWidgetnamespace Ui {
class Second;
}class Second : public QWidget
{Q_OBJECTpublic:explicit Second(QWidget *parent nullptr);~Second();private:Ui::Second *ui;public slots:void jump_slots();//定义一个接收跳转信号的槽
};#endif // SECOND_H实现函数
#include widget.hWidget::Widget(QWidget *parent): QWidget(parent)
{this-setFixedSize(500,600);//设置窗口固定大小尺寸this-setWindowTitle(来也匆匆);//设置窗口标题this-setWindowIcon(QIcon(:/photo/ckbq.jpg));//设置窗口图标this-setStyleSheet(background-color:purple);//设置窗口颜色lab1 new QLabel(this);//创建一个标签设置父组件为当前窗口组件lab1 - resize(500,200);//设置标签大小lab1 - setPixmap(QPixmap(:/photo/bj.jpg));//标签中添加图片内容lab1 - setScaledContents(true);//设置标签内容自适应lab2 new QLabel(this);//创建标签设置父组件为当前窗口组件lab2 - resize(40,40);//设置标签大小lab2 - move(120,300);//设置标签位置lab2 - setPixmap(QPixmap(:/photo/userName.jpg));lab2 - setScaledContents(true);//设置内容自适应lab3 new QLabel(this);//创建标签设置父组件为当前窗口组件lab3 - resize(40,40);//设置标签大小lab3 - move(lab2-x(),lab2-y()100);//设置标签位置lab3 - setPixmap(QPixmap(:/photo/passwd.jpg));lab3 - setScaledContents(true);//设置标签内容自适应dit1 new QLineEdit(this);//创建一个行编辑器指定父组件dit1-setPlaceholderText(QQ/手机/邮箱);//设置占位文本dit1-move(lab2-x()70,lab2-y());//设置行编辑器位置dit1-resize(250,40);//设置行编辑器大小dit1-setStyleSheet(background-color:white);//设置背景颜色dit2 new QLineEdit(this);//创建一个行编辑器父组件为当前窗口组件dit2-setPlaceholderText(密码);//设置占位文本dit2-move(lab3-x()70,lab3-y());dit2-resize(250,40);//设置行编辑器大小dit2-setStyleSheet(background-color:white);//设置背景颜色dit2-setEchoMode(QLineEdit::Password);//设置输入为密文模式btn1 new QPushButton(登录,this);//创建一个按钮设置按钮文本为登录btn2 new QPushButton(取消,this);//创建一个按钮设置按钮文本为取消btn1-resize(80,40);//设置按钮大小btn2-resize(80,40);//设置按钮大小btn1-move(300,500);//设置按钮位置btn2-move(btn1-x()100,btn1-y());//设置按钮位置btn1-setIcon(QIcon(:/photo/login.png));//设置按钮图标btn2-setIcon(QIcon(:/photo/cancel.png));//设置按钮图标connect(this-btn1,QPushButton::clicked,this,Widget::btn1_slot);connect(this-btn2,SIGNAL(clicked()),this,SLOT(btn2_slot()));}
void Widget::btn1_slot()
{QString userName dit1-text();QString password dit2-text();if(userNameadminpassword123456){int res QMessageBox::information(this,提示,登陆成功,QMessageBox::Ok|QMessageBox::Cancel,QMessageBox::Ok);if(res QMessageBox::Ok){emit jump();//发送跳转信号this-close();//关闭界面}}else{int res QMessageBox::critical(this,登录失败,账号密码不匹配,是否重新登录,QMessageBox::Yes|QMessageBox::Cancel,QMessageBox::Yes);if(res QMessageBox::Yes){dit2-clear();//清空行编辑器dit2中的内容}}
}
void Widget::btn2_slot()
{QMessageBox box(QMessageBox::Question,问题,是否要取消登录,QMessageBox::Yes|QMessageBox::No,this);int ret box.exec();if(ret QMessageBox::Yes){this-close();}
}
Widget::~Widget()
{
}
跳转界面实现函数
#include second.h
#include ui_second.hSecond::Second(QWidget *parent) :QWidget(parent),ui(new Ui::Second)
{ui-setupUi(this);
}Second::~Second()
{delete ui;
}
void Second::jump_slots()
{this-show(); //显示Second中的组件
}主函数
#include widget.h
#include second.h
#include QApplicationint main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;//实例化Widget类对象取名ww.show();//调用w中的show函数显示w中的所有组件Second s;//实例化Second类对象取名sQObject::connect(w,Widget::jump,s,Second::jump_slots);//将w中的jump信号函数连接到s中的jump_slots槽函数中return a.exec();//阻塞等待
}2.实现文件对话框的保存功能槽函数
//保存文件按钮的对应槽函数
void Widget::on_savebtn_clicked()
{//调用QFileDialog的静态成员函数getSaveFileName来获取选中文件的路径QString filename QFileDialog::getSaveFileName(this,保存文件,./,Image File(*.png *.jpg *.bmp);;Text File(*.txt);;All(*.*));if(filename.isNull()){QMessageBox::information(this,提示,您取消了保存文件);return;}QFile file(filename);//1.实例化一个文件对象if(!file.open(QFile::WriteOnly))//以只写操作打开文件{return;}QString bufui-textEdit-toPlainText();//2.获取文本编辑器中的纯文本内容file.write(buf.toLocal8Bit());//3.将文本内容转换成c风格字符串并写入文件中file.close();//4.关闭文件
}
3.实现按键盘wsad键实现小球上下左右移动的键盘按下处理函数
//键盘按下事件处理函数的定义
void Widget::keyPressEvent(QKeyEvent *event)
{qDebug() 键盘被按下了 event-text()键值为 event-key();switch(event-key()){caseW:{if(ui-label-y()0-ui-label-height()){ui-label-move(ui-label-x(),this-height());}ui-label-move(ui-label-x(),ui-label-y()-10);break;}caseS:{if(ui-label-y()this-height()){ui-label-move(ui-label-x(),0-ui-label-height());}ui-label-move(ui-label-x(),ui-label-y()10);break;}caseA:{if(ui-label-x()0-ui-label-width()){ui-label-move(this-width(),ui-label-y());}ui-label-move(ui-label-x()-10,ui-label-y());break;}caseD:{if(ui-label-x()this-width()){ui-label-move(0-ui-label-width(),ui-label-y());}ui-label-move(ui-label-x()10,ui-label-y());break;}}
} Xmind