Qt入门笔记

1 篇文章 0 订阅

基础

Qt设计师界面类
界面类关联信号槽的几种方式
在创建发送方时进行connect
qDebug()

foreach()

使用Qt资源文件

添加主窗口菜单
Gui应用,继承自QMainWindow,添加菜单键“新建(&F)”,·

添加菜单图标

NetWork

http

Example:HTTP Client

#include <QtNetwork>

显示网页

// 用来发送请求和接受应答
QNetworkReplyAccessManager *manager;
manager = new QNetworkAccessManager(this);
connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*)));
// 发送网络请求,以及post()函数
manager->get(QNetworkRequest(QUrl("https:***")));

// func replyFinished()
QTextCodec *codec = QTextCodec::codecForName("utf8");
QString all = codec->toUnicode(relpy.readAll());

下载文件

// 声明
QNetworkAccessManager *manager;
QNetworkReply *reply;
QUrl url;
QFile *file;

// Qt显示进度条 Progress Bar
ui->progressBar->setMaximum();
ui->progressBar->setValue();
ui->progressBar->hide();
ui->progressBar->show();

// func startRequest
reply = manager->get(QNetworkRequest(url));
// 接收数据
connect(reply, SIGNAL(readyRead()), this, SLOT(httpReadyRead()));
// 更新进度条
connect(reply, SIGNAL(downloadProgress(qint64, qint64)), this, SLOT(updateDataReadProgress(qint64, qint64)));
// 下载完成
connect(reply, SIGNAL(finished()), this, SLOT(httpFinished()));

file->write(reply->readAll());
file->flush();
file->close();
// 删除reply
reply->deleteLater();

// 文件处理
QFileInfo info(url.path);		// ???

文件处理

数据

获取数据库驱动
QSqlDatabase::drivers()

编译数据库驱动,Assistant搜索SQL Database Drivers

数据库

利用QSqlQuery类执行SQL语句

#include <QSqlQuery>
#include <QSqlDatabase>
#include <QSqlError>			// 记录数据库错误头文件
#include <QDebug>

SqlLite数据库

// 创建SqlLite数据库
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
// 数据库在内存中
db.setDatabaseName(":memory:");
// 创建查询对象
QSqlQuery query;
// 创建数据库,id,name,
query.exec("create table student (id int primary key, "
                "name varchar(20))");
// 执行查询,并返回查询结果的最后一项记录,"查询语句"
query.exec();
// 查询对象query的下一条
query.next();
// 当前记录的第(int)属性(列)的value
query.value(int);
// 当前query所在第几项(行)
query.at();
// 获得现在指向的记录
query.record();
// 每条记录中属性(列)的数量
query.record().count();
// 某个属性所在列
query.record().indexOf();
// query指向结果集的第int条记录
query.seek(int);
// 定位到结果集的最后一条记录
query.last();

B i n d V a l u e ( ) BindValue() BindValue() a d d B i n d V a l u e ( ) addBindValue() addBindValue()添加记录

query.prepare("insert into student (id, name) values(:id, :name)");
query.bindValue(0, 5);
query.bindValue(1, "sixth");
query.exec();

// 或者
query.prepare("insert into student(id, name) "
                  "values (?, ?)");
query.bindValue(0, 5);
query.bindValue(1, "sixth");
query.exec();

// 或者
query.prepare("insert into student(id, name) "
                  "values (?, ?)");
query.addBindValue(5);
query.addBindValue("sixth");
query.exec();

// 或者
query.prepare("insert into student(id, name) "
                      "values (:id, :name)");
query.bindValue(":id", 5);
query.bindValue(":name", "sixth");
query.exec();

批处理操作

QSqlQuery q;
q.prepare("insert into student values (?, ?)");
QVariantList ints;
ints << 10 << 11 << 12 << 13;
q.addBindValue(ints);
QVariantList names;
// 最后一个是空字符串, 应与前几个格式相同
names << "xiaoming" << "xiaoliang" << "xiaogang" << QVariant(QVariant::String);
q.addBindValue(names);

错误处理

#include <QSqlError>

if (!q.execBatch())     // 进行批处理,如果出错就输出错误
    qDebug() << q.lastError();

XML

QtXml Module
QT += xml
XML文件说明:节点,根节点,元素,属性,属性值

示例与读取

// 新建对象,代表一个XML文档
QDomDocument doc;
// 建立指向xml文件的QFile对象
QFile file("*.xml");
// 打开方式
file.open(QIODevice::Readonly);
file.open(QIODevice::WriteOnly | QIODevice::Truncate)
// 
doc.setContent(&file);
// 获取doc第一个子节点,即文档说明
QDomNode firstNode = doc.firstChild();
//
firstNode.nodeName();
firstNode.nodeValue();
// 返回根元素
QDomElement docElem = doc.documentElement();
//
QDomNode n = docElem.firstChild();
// n的下一个兄弟节点
n.nextSibling();
// 
QDomElement e = n.toElement();
qPrintable();
QDomNodeList list = e.childNodes();
list.at(i);

写XML文件

QDomDocument doc;
//添加处理指令,说明语句
QDomProcessingInstruction instruction;  
instruction = doc.createProcessingInstruction("xml","version=\"1.0\"encoding=\"UTF-8\"");
doc.appendChild(instruction);

QDomElement book = doc.createElement(tr());
QDomAttr id = doc.createAttribute();
QDomText text;
id.setValue();
book.setAttributeNode();
book.appendChild();


// UI
ui->listWidget->clear();
ui->listWidget->addItem();


使用流读写XML

QIODEVICE::WRITEONLY与QFILE::WRITEONLY(Qt文件操作)

#include <QXmlStreamReader>
#include <QXmlStreamWriter>

QFile file();

// 读
if (!file.open(QFile::ReadOnly | QFile::Text)
	{// 错误处理}

QXmlStreamReader reader;
// 设置文件,将流设置为初始状态
reader.setDevice(&file);
while(!reader.atEnd())
{
	//
	QXmlStreamReader::TokenType type = reader.readNext()
	// 判断记号类型,并进行相应操作
	if (type == QXmlStreamReader::StartDocument)	{}
	if (type == QXmlStreamReader::StartElement)		
	{
		...;
		if (reader.attributes().hasAttribute())		{}
	}
	if (type == QXmlStreamReader::EndElement)		{}
	if (type == QXmlStreamReader::Characters && !reader.isWhitespace()	{}
}
	
if (reader.hasError(){
	qDebug() << "error: " << reader.errorString();
}

// 写
if (!file.open(QFile::WriteOnly | QFile::Text)
	{// 错误处理}
	
QXmlStreamWriter stream(&file);
// 设置自动格式,自动换行和添加缩进
stream.setAutoFormatting(true);
stream.writeStartDocument();
stream.writeStartElement();
stream.writeAttribute();
stream.writeTextElement();
stream.writeEndElement();
stream.writeEndDocument();

file.close();
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值