Qml和C++开发的学生信息管理软件一
来源:互联网 发布:武汉淘宝产品拍摄 编辑:程序博客网 时间:2024/06/05 18:38
一个月前接触到了Qml,也做过一些练习,但只能实现动画和简单的布局功能,逻辑部分和数据处理很难上手,看到许多人将C++和结合起来,Qml负责界面设计,C++实现逻辑处理,但将C++注册到 Qml中一直让我头疼,比如属性声明和函数声明类想不通为什么这么做,可能是时间问题吧,慢慢的就发现了其实也不难,花了好几天做成了这个小应用,算是这一阶段的小小纪念吧。
下来就是贴代码的时间了.
先是main.qml
启动时先进入登录界面
import QtQuick 2.6import QtQuick.Window 2.2import QtQuick.Controls 1.0import Login_gui 1.0import QtQuick.Particles 2.0Window { visible: true id:mainwindow width: 300 height: 533 color: "#F0F0F0" LoginDialog {}}
LoginDialog的代码如下:
import QtQuick 2.0import Login_gui 1.0import QtQuick.Controls 1.1Rectangle { id:loginsence width: 300 height: 533 color: "#F0F0F0" visible: true x:300 Component.onCompleted: { x=0; } Behavior on x { NumberAnimation {easing.type:Easing.OutQuint;duration: 1100}//OutQuint动画效果 结束时速度变慢 }property string userselect/*************************************************************************************/ //登陆请求函数 function login_req() { //判断用户名是否有效 if (userinput.text== "") { message.text = "请输入用户名!" message.opacity = 1 return } //判断密码是否有效 if (passwordinput.text == "") { message.text = "请输入密码!" message.opacity = 1 return } //显示登陆动画 load_gif.opacity = 1 //登陆请求 //console.log("***********************") login_gui.user_id = userinput.text login_gui.password = passwordinput.text login_gui.slot_login_req() } /*************************************************************************************/ Login_gui{ id:login_gui property var loginstudent onSig_login_result: { //关闭登陆动画 load_gif.opacity = 0 //根据登陆结果处理 switch (result) { //登陆成功 case 0: message.text = "登陆成功" message.opacity = 1 if(userselect=="studentselect " ) { loginstudent= Qt.createComponent("StudentDialog.qml").createObject(loginsence);break; } else { loginstudent= Qt.createComponent("TeacherDialog.qml").createObject(loginsence);break; } //无此用户名 case 1: message.text = "登陆失败:无此用户名" message.opacity = 1 break; //密码错误 case 2: message.text = "登陆失败:密码错误" message.opacity = 1 break; case 3: message.text = "登陆失败:请选择登录类型" message.opacity = 1 } } }/************************************************************************/ Rectangle //顶栏 { id: top_bar anchors.left: parent.left; anchors.leftMargin: parent.width/2; anchors.top: parent.top; anchors.topMargin: 10; border.color: "#707070" Text { id: title anchors { top: parent.top; horizontalCenter: parent.horizontalCenter } text: "登陆" font.bold: true font.pixelSize: mainwindow.height/25; color: "blue" } } /**************************************************************/ //用户名框 Rectangle{ id:loginBox height:parent.height/16;width:parent.width; anchors.left: parent.left; anchors.leftMargin:0; anchors.top: parent.top; anchors.topMargin: 150; color:"white" Row{ spacing:1 Rectangle//用户名框 { id:user height:loginBox.height;width:loginBox.width/4; anchors.left: loginBox.left; anchors.leftMargin:0; anchors.bottom: loginBox.bottom; anchors.bottomMargin: 0; Text{ text: "用户名:"; anchors.left: parent.left; anchors.leftMargin:0; anchors.bottom: parent.bottom; anchors.bottomMargin: 0; font.bold:false font.family: "微软雅黑" color:"black" font.pointSize: 15 } } Rectangle//用户名输入框 { id:loginuser height:loginBox.height;width:loginBox.width-user.width; anchors.left: loginBox.left; anchors.leftMargin:user.width; anchors.bottom: loginBox.bottom; anchors.bottomMargin: 0; TextInput { id:userinput anchors.left: parent.left; anchors.leftMargin:0; anchors.bottom: parent.bottom; anchors.bottomMargin: 0; width: parent.width height: parent.height/2 font.family: "微软雅黑" font.pointSize: 15 focus: true color:"black" text: "王红" // MouseArea { anchors.fill: user;onClicked: user.selectAll()} } } } }/************************************************************************/ //密码框 Rectangle{ id:passwordBox height:parent.height/16;width:parent.width; anchors.left: parent.left; anchors.leftMargin:0; anchors.top: parent.top; anchors.topMargin: loginBox.height+151; color:"white" Row{ spacing: 1 Rectangle//密码框 { id:password height:passwordBox.height;width:passwordBox.width/4; anchors.left: passwordBox.left; anchors.leftMargin:0; anchors.bottom: passwordBox.bottom; anchors.bottomMargin: 0; Text{ text: "密 码:"; anchors.left: parent.left; anchors.leftMargin:0; anchors.bottom: parent.bottom; anchors.bottomMargin: 0; font.family: "微软雅黑" font.pointSize: 15 } } Rectangle{ //密码输入框 id:loginpassword height:passwordBox.height;width:passwordBox.width-password.width; anchors.left: passwordBox.left; anchors.leftMargin:password.width; anchors.bottom: passwordBox.bottom; anchors.bottomMargin: 0; color:"white" TextInput{ id:passwordinput text: "1234567" anchors.left: parent.left; anchors.leftMargin:0; anchors.bottom: parent.bottom; anchors.bottomMargin: 0; width: parent.width height: parent.height/2 font.family: "微软雅黑" font.pointSize: 15 // MouseArea { anchors.fill: password;onClicked: password.selectAll()} } } } }/************************************登录*******************************************/ Rectangle{ id: loginbutton anchors.left: parent.left anchors.leftMargin: 6 anchors.top: passwordBox.top anchors.topMargin: parent.width/4.2; width: parent.width-12; height: passwordBox.height; radius: 5 //倒角 color:"#19cff7" Text{ anchors.horizontalCenter: parent.horizontalCenter //水平中心 anchors.verticalCenter:parent.verticalCenter //垂直中心 text:"登录" font.family: "华文细黑" styleColor: "white" font.pointSize: 15 } MouseArea { anchors.fill: parent; onClicked:{console.log(passwordinput.text); login_req()} } }/************************************登录动画*****************************************/ AnimatedImage { id: load_gif ; source: "qrc:/new/prefix1/image/login.gif" anchors {horizontalCenter: mainwindow.horizontalCenter;verticalCenter:mainwindow.verticalCenter} y: 180; x:90 opacity: 0 }/***************************************信息框*************************************/ Rectangle{ anchors.horizontalCenter: parent.horizontalCenter //水平中心 anchors.bottom: loginBox.bottom anchors.bottomMargin:45; width: loginbutton.width/2; height: loginbutton.height/2; radius: 3 //倒角 color: "#F0F0F0" Text{ id:message anchors.horizontalCenter: parent.horizontalCenter //水平中心 anchors.verticalCenter:parent.verticalCenter //垂直中心 font.family: "华文细黑" styleColor: "black" font.pointSize: 10 opacity: 0 } }/****************************注册*************************************/ Rectangle{ id:newuserrer anchors.right: parent.right; anchors.rightMargin: 28; anchors.bottom: parent.bottom; anchors.bottomMargin: 35; Text { id: newuser anchors { top: parent.top; horizontalCenter: parent.horizontalCenter } text: "新用户" font.family: "华文细黑" font.pixelSize: 12 color: "#3aa7ea" MouseArea { anchors.fill: parent; property var login onClicked: { login= Qt.createComponent("NewUserDialog.qml").createObject(loginsence); loginsence.deleteLater(); } } } }/****************************登录类型*************************************/ Rectangle { anchors.horizontalCenter: parent.horizontalCenter //水平中心 anchors.bottom:loginbutton.bottom; anchors.bottomMargin: (loginbutton.y-passwordBox.y+loginbutton.height)/2 ExclusiveGroup { id: language; } Row { anchors.centerIn: parent; spacing:loginsence.width/4.5 CheckBox { id:student text: "学生登录"; exclusiveGroup: language; onCheckedChanged: { if(checked){login_gui.student=true;login_gui.teacher=false;userselect="studentselect " } } } CheckBox { id:teacher text: "教师登录"; exclusiveGroup: language; onCheckedChanged: { if(checked){ login_gui.teacher=true;login_gui.student=false;userselect="teacherselect"} } } } } /************************************************************************************/}
没什么难点,主要是界面布局费点事,定义了一个属性property string userselect
来标标识是管理员登录还是学生登录,以便进图不同的界面。还有就是使用Textinput是,需要设置高度和宽度,否则无法输入文字,这个很是奇怪,我觉得软件做的不够人性化,好了,今天就先到这里了。
0 0
- Qml和C++开发的学生信息管理软件一
- Qml和C++开发的学生信息管理软件二
- 基于链表的学生信息管理系统和基于MySQL的学生信息管理系统 -C语言
- c语言实现的学生信息管理系统
- LINUX下的C学生信息管理系统
- Mysql 中C API 的学生信息管理
- LINUX下的C学生信息管理系统
- 基于QT的学生信息管理系统开发
- 基于struts2开发的学生信息管理系统
- C#-学生信息管理系统
- 学生信息管理系统(C++)
- 用java开发学生信息管理系统(SIMS,一)
- 【Struts2+Hibernate4】开发学生信息管理功能(一)
- 学生信息管理系统(c/c++)
- MFC和ACCESS数据库的连接(C_Answers团队开发学生信息管理系统所用)
- C语言标准输出和学生信息管理系统设计分享
- 学生信息管理系统(一)
- 学生信息管理系统(一)
- android蓝牙4.0开发
- Swift网络请求,数据模型,图片缓存,自动布局,上拉刷新下拉加载
- Spring4+Hibernate4+Mybatis Maven的pom配置
- OpenGL学习脚印: 向量和矩阵要点(math-vector and matrices)
- BAT命令--FOR使用方法及举例
- Qml和C++开发的学生信息管理软件一
- iOS真机运行出现The certificate used to sign "APP名" has either expired or has been revoked.
- Android - R.java文件不自动更新时解决方案
- 【转载】sql 循环语句几种方式
- Java中HashMap遍历的两种方式
- SpringMVC表单提交Action的路径问题
- 读取oracle sequence 的currval
- 弹窗
- 七夕节