1.helloworld代码框架(QT初认知)
int main(int argc,char *argv[])//程序台控制参数不要乱删,删了就启动不了了
{
//1.a应用程序对象,在QT中,应用程序对象有且只有一个
QApplication a(argc,argv);
//2.窗口对象
MainWindow w;
//调用w对象的show方法
w.show();
//--应用程序对象进入消息循环
//--等待一些消息传递给窗口
//--让代码阻塞,后面代码是不执行的
return a.exec();
}
消息循环:这是QT类提供的一个机制,为后续的用户操作提供一个缓冲时间,想好逻辑。
环境使用部署:当需要用到QT中某个方面的比如网络通信这些的时候,需要在.pro文件里面的QT+=那一行指明你加了什么进去
比如说我要用网络通信功能,那么我就应当QT+=core gui network 加上去,实际上在编译过程中会自动添加这些东西进去
2.常用组件:QPushButton以及窗体基本api
头文件:#include < QPushButton >
button使用方法以及绑定方法
//1.按钮对象创建方法
QPushButton * btn=new QPushButton();
//2.按钮指定显示的窗口
btn->setParent(qw);
//3.显示文本
btn->setText("登录");
传递参数方法
QWidget qw;
QuickDemo qd;
qd.buttonTest(&qw);
qw.show();
重置窗口大小方法是resize
移动组件方法是调用其**move()**方法
设置窗口标题是调用其setWindows方法
设置窗口大小使用setFixedSize()方法
除此之外button也可以调整大小
3.常用基类介绍
1.QMainWindow 是主窗口类,主窗口具有主菜单栏、工具栏和状态栏,类似于一般的应用程序的主窗口;
2.QWidget 是所有具有可视界面类的基类,选择 QWidget 创建的界面对各种界面组件都可以 支持;
3.QDialog 是对话框类,可建立一个基于对话框的界面
4.基本页面布局以及按钮信号槽使用
信号槽
信号槽的使用基本是用于button,用于提交用户数据等,主要绑定方法是右键button然后转到槽,选择clicked(),然后就会自动生成函数,在函数里面编写页面逻辑即可
跳转页面
跳转页面首先需要新建一个页面,可以是mainWiindows(带有菜单栏,使用起来比较方便),也可以是Widget,然后在原页面的头文件里面加上包含新页面的头文件,然后在private里面加入新页面的指针,然后再跳转函数里面调用这个指针就可以了。
mtb=new MainTable();
mtb->show();
页面数据提交
首先需要设定好交互框,一般来说,都是用label来做提示作用,然后lineText作输入框,最终提供一个submitPushButton作数据提交,值得注意的是,定义好每个组件的时候都要把objectName给改一下,避免后期认不出来。
5.数据库连接及其基本使用
数据库连接
bool connectToDataBase(){
QSqlDatabase db=QSqlDatabase::addDatabase("QSQLITE");
if(db.open()){
qDebug()<<"数据库打开成功了";
return true;
}else{
qDebug()<<"数据库打开失败!";
return false;
}
}
数据库建表方法
//3.首先创建一个表格
/*创建表的写法是:创建表格语句:create table <table_name> (f1 type1, f2 type2,…);*/
QSqlQuery sqlQuery;//声明SQL语句
QString createSql="CREATE TABLE student(sId varchar primary key,sName varchar,sDorm varchar,sMajor varchar,sBrief varchar,sGrad int,sClass int,sGender int,sAge int)";//声明为创建表的SQL语句
sqlQuery.prepare(createSql);//将写好的SQL语句放进sqlQuery容器中保存
//检验是否能完成建表
if(sqlQuery.exec()){
qDebug()<<"建立学生表成功!";
}else{
qDebug()<<"建立学生表失败!"<<sqlQuery.lastError();
}
数据库插入数据方法
//4.向表中插入数据来测试
//插入语句:insert into <table_name> values (value1, value2,…);
QString insertSql="INSERT INTO student values(\"202025220227\",\"大司马\",\"泰山区1栋1号\",\"软件工程\",\"喜爱编程\",1,2,1,1)";
QSqlQuery sqlQuery;
sqlQuery.prepare(insertSql);
if(sqlQuery.exec()){
qDebug()<<"向数据库学生表插入数据成功了";
}else{
qDebug()<<"向数据库学生表插入失败了,原因:"<<sqlQuery.lastError();
}
向数据库中查询数据方法
//5.向数据库中查询数据
QString selectSql="select * from student";//查询全部数据
QSqlQuery sqlQuery;
sqlQuery.prepare(selectSql);
if(!sqlQuery.exec()){
qDebug()<<"查询操作错误!原因:"<<sqlQuery.lastError();
}else{
while(sqlQuery.next()){
QString sId=sqlQuery.value(0).toString();
qDebug()<<sId;
}
}
更新数据库内数据的方法
//6.更新数据库中的内容
/*update <table_name> set <f1=value1>, <f2=value2>… where <expression>;*/
QString testName="张三";
QString updataSql="update student set sName = :sName where sId = :sId";
sqlQuery.prepare(updataSql);
sqlQuery.bindValue(":sName",testName);
sqlQuery.bindValue(":sId","202025220227");
if(sqlQuery.exec()){
qDebug()<<"修改数据成功了!";
}else{
qDebug()<<"修改数据失败了,失败原因:"<<sqlQuery.lastError();
}
用变量来替代字符串的办法
用:和即将要插入的东西绑定变量.
QString sId="00000002";
QString insertSql="INSERT INTO student values(:sId,\"大司马\",\"泰山区1栋1号\",\"软件工程\",\"喜爱编程\",1,2,1,1)";
QSqlQuery sqlQuery;
sqlQuery.prepare(insertSql);
sqlQuery.bindValue(":sId",sId);
if(sqlQuery.exec()){
qDebug()<<"向数据库学生表插入数据成功了";
}else{
qDebug()<<"向数据库学生表插入失败了,原因:"<<sqlQuery.lastError();
}