Linux-QT5.9学习笔记——高级用法

多线程:

方法一:

class MyQThread : public QThread             声明一个类继承线程对象 

void run();                                                     在虚函数run中显示操作    start函数启动线程   quit退出线程

QMutex  mutex;                                            声明一个互斥信号量。 mute.lock 到 mute.unlock  中的代码段不会被打断。

方法二:

    md5check md5calc;    QThread md5thread;        声明一个继承qobject的类,声明一个线程

    md5calc.moveToThread(&md5thread);                将类移至线程中

    md5thread.start();                                                开启线程,主线程和子线程智能通过信号和槽连接 ladbam表达式不能用

线程同步互斥方法:https://blog.csdn.net/LG1259156776/article/details/52273929

MD5文件校验:

        QCryptographicHash hash(QCryptographicHash::Md5);                                                声明一个md5加密的哈希值
        filepath = QFileDialog::getOpenFileName(this,"openfile","/home/wandong/project/");    找到文件
        file.setFileName(filepath);                                                                                                打开文件
        file.open(QIODevice::ReadOnly);                                                                                    只读模式
        if(file.exists()){                                                                                                                  文件存在                                               
            while(!file.atEnd()){                                                                                                      没有读到文件结尾
                QByteArray data = file.read(1024*1024);                                                               1M1M读取
                hash.addData(data);                                                                                                数据添加到哈希值中
            }
            md5hashvalue = hash.result().toHex();                                                                       计算哈希值  转换成16进制
            file.close();                                                                                                                    关闭文件

Sicket通信:

    localaddress = QNetworkInterface::allAddresses();                                                    得到所有的ip地址
   //    localinter = QNetworkInterface::allInterfaces();                                                      得到所有的网卡
    foreach (QHostAddress var, localaddress) {                                                               循环遍历地址
        if(var.isNull())                                                                                                           地址是否为空
            continue;       
        QAbstractSocket::NetworkLayerProtocol prot = var.protocol();                              得到地址协议
        if(prot != QAbstractSocket::IPv4Protocol)                                                               格式是否为ipv4

      quint16 port = ui->port->text().toInt();                                                                        得到端口号

      tcpserver->isListening()                                                                                             判断当前是否在监听

      tcpserver->listen(address,port)                                                                                 监听当前端口,成功返回true

     connect(tcpserver,&QTcpServer::newConnection,[=](){                                            检测到有新连接到来
       tcpsocker = tcpserver->nextPendingConnection();                                                 将新连接交给套接字
       //tcpsocker->peerName();                                                                                       窥视客户名称
    });

SQL操作:

    QSqlDatabase dbtest = QSqlDatabase::addDatabase("QMYSQL"); //设置打开数据库格式
    dbtest.setHostName("127.0.0.1");
    dbtest.setUserName("root");
    dbtest.setPassword("123");
    dbtest.setDatabaseName("test");
    if(!dbtest.open())
    {
        QMessageBox::critical(this,"警告","数据库连接失败!!!");
        this->close();
    }
    QSqlQuery query("SELECT DISTINCT * "          //操作
                    "FROM login "                 //来源
                    "WHERE user = 'wd'"           //条件
                    "AND passwd = '123';",dbtest);//复合条件
    while(query.next()){
        qDebug()<<"table name:"<<query.value(0).toString()<<query.value(1).toString();
    }
    if(query.exec("INSERT INTO login (user,passwd,part,contory) VALUES ('fd','321','南京','中国');"))
    {
        qDebug()<<"插入成功";
    }else {
        qDebug()<<"插入失败";
    }
    if(query.exec("UPDATE login SET user='fuda',passwd='951' WHERE user='fd'"))
    {
        qDebug()<<"修改成功";
    }else {
        qDebug()<<"修改失败";
    }
    if(query.exec("DELETE FROM login WHERE user='fuda'"))
    {
        qDebug()<<"删除成功";
    }else {
        qDebug()<<"删除失败";
    }

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值