Linux 学习记录50(QT篇)

news2024/11/28 10:44:30

Linux 学习记录50(QT篇)

在这里插入图片描述

本文目录

  • Linux 学习记录50(QT篇)
  • 一、基于QT的TCP客户端连接
    • 1. 代码实现
    • 2. 自制的客户端/服务器
  • 二、QT数据库SQL
    • 1. QT将数据库分为三个层次
    • 2. 实现数据库操作的相关方法
  • 思维导图
  • 练习
    • 1.
    • 2.
    • 3.
    • 4.

一、基于QT的TCP客户端连接

所需头文件 <QTcpSocket>

1. 代码实现

QString ip;
quint16 port;
QString user;//用户名非必要
QTcpSocket* tcp_Client;//客户端
/***********************客户端定义***********************/
tcp_Client = new QTcpSocket(this);

/*连接服务器的信号*/
connect(tcp_Client,&QTcpSocket::connected,this,&tcp_cil::connect_slot);
/*连接服务器的接收信号*/
connect(tcp_Client,&QTcpSocket::readyRead,this,&tcp_cil::readyread_slot);
/*连接客户端的断开信号*/
connect(tcp_Client,&QTcpSocket::disconnectFromHost,this,&tcp_cil::disconect_slot);

/*断开服务器信号*/
void tcp_cil::disconect_slot(void)
{
    QMessageBox::information(this,"断开","已断开服务器");
}
/*连接成功的槽函数*/
void tcp_cil::connect_slot(void)
{
    QMessageBox::information(this,"成功","连接成功");
    tcp_Client->write(msg.toLocal8Bit());//发送登录信息
}

/*当获取到来自服务器的消息时会由信号触发该函数*/
void tcp_cil::readyread_slot(void)
{
    QString recv_str;
    /*取来自服务器的数据并转换为QString格式*/
    recv_str = QString::fromLocal8Bit(tcp_Client->readAll());
    recv_ser->addItem(recv_str);
}

/*连接按钮 要连接服务器时触发*/
void tcp_cil::link_ser_signals(void)
{
    /*获取文本*/
    ip = set_ip->text();//获取IP
    QString port_str = set_port->text();//获取端口
    port = port_str.toUInt();//获取转换端口格式为无符号整形
    user = set_user->text();//获取IP
    /*将客户端连接至服务器 当成功连接服务器会发送&QTcpSocket::connected的信号到对应槽函数*/
    tcp_Client->connectToHost(ip,port);
}
/*断开按钮*/
void tcp_cil::close_ser_signals(void)
{
    QString msg = user + " 退出服务器";
    tcp_Client->write(msg.toLocal8Bit());//向服务器发送登录消息
    /*断开服务器连接*/
    tcp_Client->disconnectFromHost();
}
/*发送按钮*/
void tcp_cil::send_ser_signals(void)
{
    /*获取发送的文本内容*/
    send_str = send_text->toPlainText();
    QString msg = user + " : " +send_str;
    tcp_Client->write(msg.toLocal8Bit());//发送登录信息
    /*发送后清空文本*/
    send_text->clear();
}

2. 自制的客户端/服务器

如有需要请到本文顶部获取,含源码
服务器在上一篇文章

客户端
在这里插入图片描述
服务器
在这里插入图片描述

二、QT数据库SQL

所需头文件:<QSqlDatabase> <QSqlQuery> <QSqlError> <QSqlRecord>
需要在obj文件添加 sql 如下
在这里插入图片描述

1. QT将数据库分为三个层次

  1. 数据库驱动层:QSqlDriver、QSqlDriverCreator、QSqlDriverCreatorBase、QSqlDriverPlugin
  2. sql接口层:QSqlDatabase、QSqlQuery、QSqlRecord、QSqlError
  3. 用户接口层:提供一些模型QSqlQueryModel、QSqlTableModel、QSqlRelationalTableModel

2. 实现数据库操作的相关方法

#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
#include <QSqlRecord>
1、添加数据库:[static] QSqlDatabase QSqlDatabase::addDatabase(QSqlDriver *driver, const QString &connectionName = QLatin1String(defaultConnection))
                                                                
QSQLITE
 SQLite version 3 or above
2、设置数据库名称:void QSqlDatabase::setDatabaseName(const QString &name)
3、包含数据库:bool QSqlDatabase::contains(const QString &connectionName = QLatin1String(defaultConnection))
4、打开数据库:bool QSqlDriver::open(const QString &db)
5、关闭数据库:void QSqlDatabase::close()
6、错误信息:QSqlError QSqlDatabase::lastError()

7、sql语句执行:构造一个QSqlQuery类对象,调用其成员函数exec,执行sql语句:bool QSqlQuery::exec(const QString &query)
8bool QSqlQuery::next():遍历查询结果的函数
=================================================
/***********************数据库设置***********************/
    /*判断数据库是否存在,如果不存在则新建*/
    if(!db.contains("Registry.db"))
    {//如果不存在
        db = QSqlDatabase::addDatabase("QSQLITE");//使用3版本的数据库
        db.setDatabaseName("Registry.db");//起名为注册表(Registry.db)
    }

    /*打开数据库*/
    if(!db.open())
    {//如果未打开成功
        QMessageBox::information(this,"SQL ERROR","数据库打开失败");
    }

    /*当数据库打开成功,创建数据表*/
    QSqlQuery querry;
    /*准备sql语句      (UDI 键) (pswd) (user)*/
    QString sql = "create table if not exists date(UID char primary key,pswd char,user char)";
    /*执行语句*/
    if(!querry.exec(sql))
    {//语句执行失败
        QMessageBox::information(this,"SQL ERROR","创建表失败");
    }
QSqlQuery querry;
    /*查找UID*/
    QString sql = QString("select * from date WHERE UID = '%1'").arg(UID_line);


    if(querry.exec(sql))
    {
        querry.next();
        /*当前记录的个数*/
        qDebug() << sql;
        qDebug() << querry.value(0).toString();
//        qDebug() << querry.value(2).toString();
//        qDebug() << querry.value(3).toString();
    }else
    {
        QMessageBox::information(this,"login ERROR",querry.lastError().text());
        return;
    }

思维导图

练习

1.


2.


3.


4.


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/741930.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

3G理论概述

文章目录 UMTS&#xff08;通用移动通信系统&#xff0c;Universal Mobile Telecommunications System&#xff09;UTRAN&#xff08;UMTS陆地无线接入网&#xff0c;UMTS Terrestrial Radio Access Network&#xff09;RNC&#xff08;无线网络控制器&#xff0c;Radio Networ…

music21 层级解析(了解次结构方可将任意曲谱与mid互相转换)

这段代码创建了一个音乐乐谱并将其保存为 MIDI 文件&#xff0c;其中包含一个乐器和多个小节。每个小节中包含四个音符或和弦&#xff0c;然后将小节添加到乐谱中。最后&#xff0c;将乐谱写入 MIDI 文件。 首先&#xff0c;通过导入 music21 库来使用它的功能。 import music2…

onvif库封装及qt工程调用onvif库实现设备搜索、获取码流地址等功能

一、前言&#xff1a; 本篇的OnvifManager工程是在vs2010下进行开发编译&#xff0c;它实现了对onvif库的封装调用&#xff0c;目前工程接口实现了对onvif的搜索、码流地址获取、设备重启接口&#xff0c;其他接口后续可以通过更改工程代码进行添加。qt工程myonvif是对OnvifMan…

Zotero翻译插件“zotero pdf translate”——使用时出现广告的问题的解决办法

一、背景&#xff1a; 在Zotero上安装了“zotero-pdf-translate”插件来辅助翻译。今天忽然发现&#xff0c;在使用CNKI翻译引擎的时候&#xff0c;末尾被加上了广告&#xff1a; (查看名企职位领高薪offer&#xff01;--->智联招聘https***dict.cnki.net/ad.html) 如下&…

【IMX6ULL驱动开发学习】16.睡眠机制_poll机制_fasync异步通知(按键控制LED)

学完了休眠唤醒机制、poll机制、异步通知、定时器、tasklet、工作队列、mmap、input子系统后&#xff0c;该沉淀沉淀了 一、睡眠机制 案例&#xff1a;APP程序读取按键值 - 睡眠机制&#xff08;阻塞或非阻塞&#xff09; 1.等待队列头创建 static DECLARE_WAIT_QUEUE_HEA…

从零实现深度学习框架——带Attentiond的Seq2seq机器翻译

引言 本着“凡我不能创造的,我就不能理解”的思想,本系列文章会基于纯Python以及NumPy从零创建自己的深度学习框架,该框架类似PyTorch能实现自动求导。 要深入理解深度学习,从零开始创建的经验非常重要,从自己可以理解的角度出发,尽量不使用外部完备的框架前提下,实现我…

【Windows】PowerToys - 微软超强生产力工具

Windows用户必看 - 电脑系统增强工具 下载 下载地址 简介 PowerToys 是一组由 Microsoft 创建和维护的开源实用工具集&#xff0c;旨在为 Windows 操作系统提供额外的功能和增强体验。它是为 Windows 10 及更高版本设计的&#xff0c;可帮助用户提高效率、个性化和定制化他们…

apache 安装配置 基础篇(三) 之 虚拟机

apache虚拟主机类型有两种 1、基于名称的虚拟主机 2、基于地址或IP地址的虚拟主机 基于名称的虚拟主机 ## httpd-vhosts.conf 添加如下代码&#xff0c; ## 同时要在httpd.conf中追加监听89端口 Listen 89 ## 修改apache 文件要 在bin路径下面的cmd 录入 httpd -t 检测 代…

centos7搭建postgresql主从(主备)架构

本篇介绍如何在centos7系统搭建一个postgresql主备集群实现最近的HA&#xff08;高可用&#xff09;架构。后续更高级的HA模式都是基于这个最基本的主备搭建。 节点规划 ip 主机名 用途 192.168.182.4 node1 主库&#xff08;读写&#xff09; 192.168.182.5 node2 备库&#…

大神都在用的4个AI绘画工具,记得收藏

AI绘画工具是一种利用人工智能辅助绘画创作的工具&#xff0c;它可以帮助设计师快速绘制高质量的艺术作品。本文列出了国内外4款免费的AI绘画工具&#xff0c;它们使用起来非常简单&#xff0c;而且创作效果非常不错&#xff0c;一起来看看吧&#xff01; 1.即时灵感 即时灵感…

【字符串 简单】LeetCode 14. 最长公共前缀 Java

我的思路&#xff1a; 给字符串数组按照字符串的长度从长到短排序&#xff0c;因为最长公共前缀最长的话&#xff0c;也只能是字符串数组中最短的那一个字符串设置一个index变量&#xff0c;表示当前正在检查字符数组中所有字符串的index位置循环遍历字符串数组n遍&#xff0c…

Java设计模式之结构型-桥接模式(UML类图+案例分析)

目录 一、基础概念 二、UML类图 三、角色分析 四、案例分析 1、支付方式 2、支付渠道 五、总结 一、基础概念 桥接模式&#xff08;Bridge Pattern&#xff09;是一种结构型设计模式&#xff0c;其主要目的是“将抽象部分与实现部分分离&#xff0c;使它们都可以独立地…

微信小程序扫码邀请,小程序码生成带参数

代码一&#xff1a; public String generateQRCode(String appId, String appSecret, String pagePath) throws IOException {String accessToken getAccessToken(appId, appSecret);String apiUrl "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token&qu…

springboot家乡特色推荐系统

本次设计任务是要设计一个家乡特色推荐系统&#xff0c;通过这个系统能够满足家乡特色文章的管理功能。系统的主要功能包括首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;文章分类管理&#xff0c;文章分享管理&#xff0c;系统管理等。 管理员可以根据系统给定的账…

前端工程化与webpack

一、目标 能够说出什么是前端工程化能够说出webpack的作用能够掌握webpack的基本使用了解常用plugin的基本使用了解常用loader的基本使用能够说出Source Map的作用 二、目录 前端工程化webpack的基本使用webpack中的插件webpack中的loader打包发布Source Map 1.前端工程化 …

2023年Q2京东冰箱行业品牌销售排行榜(京东销售数据分析)

近年我国的冰箱零售呈波动变化的趋势&#xff0c;由于冰箱市场趋于饱和&#xff0c;因此消费者对冰箱的需求逐渐变为替换需求&#xff0c;这也进一步推动了产品的更新迭代。接下来结合具体数据&#xff0c;我们来分析一下2023年Q2冰箱行业的销售详情。 根据鲸参谋电商数据分析平…

MySQL环境配置

MySQL在centos7环境安装 一.卸载不要的环境二.获取mysql官方yum源三.安装mysql服务四.mysql登陆五.设置配置文件my.cnf六.设置开机启动【可以不设】七.常见问题 安装与卸载中&#xff0c;⽤⼾全部切换成为root&#xff0c;⼀旦安装&#xff0c;普通⽤⼾也能使⽤。 一.卸载不要…

Python编程——字符串的三种定义方式讲解

作者&#xff1a;Insist-- 个人主页&#xff1a;insist--个人主页 本文专栏&#xff1a;python专栏 专栏介绍&#xff1a;本专栏为免费专栏&#xff0c;并且会持续更新python基础知识&#xff0c;欢迎各位订阅关注。 前言 上篇文章讲了python字符串的一些知识&#xff0c;现在…

[ICASSP 2019] 差分隐私压缩 K 均值

Differentially Private Compressive K-means Differentially Private Compressive K-means | IEEE Conference Publication | IEEE Xplore 摘要&#xff1a; 这项工作解决了从大量数据中学习并保证隐私的问题。概述的学习框架建议通过将大规模数据集压缩为广义随机矩的单个向…

Arduino为GD32芯片编程

GD32F103用Arduino编程 板子线路图Ardunino编程程序编制编译下载 板子线路图 这个STM32F103C8T6用国产的GD32来代替。 Ardunino编程 使用Arduino编程&#xff0c;在板子管理器中安装&#xff1a; 安装需要一些时间&#xff0c;在这里可以看到&#xff0c;STM32F1xx支持GD32F…