3.4学习(Qt八股)

1、信号与槽connect的第5个参数
一般来说都是不写,系统默认是Qt::AutoConnect,而一般来说分为以下几种:
1、Qt::DirectConnection,用于单线程,信号发出后就会立即响应槽函数 2、Qt::QueuedConnection,用于多线程通信,槽函数会加入到接受者的队列
3、Qt::BlockingQueuedConnection,也是用于多线程,发送者一旦发送信号后,它的线程就会阻塞,直至接受者接受到信号
4、Qt::UniqueConnection,用于多线程,指定信号和槽函数,防止发生重复连接
2、QSqlDatabase的事务使用
transaction()是开始一个事务,经过种种操作后成功就可以提交commit(),如果其中有一个环节出问题了就会回滚事务rollback(),这个回滚会将之前开始事务后的所有操作重置,一个事务要么全部成功,要么全部失败

点击查看代码
QSqlDatabase db=QSqlDatabase::database();//获取数据库
    if(db.transaction())//开始一个事务
    {
        QSqlQuery sql(db);
        if(sql.exec("INSERT INTO table_name(column1,column2)VALUES(value1,vlaue2)"))
        {
            if(sql.exec("UPDATE table_name SET column=value"))
            {
                if(db.commit())
                {
                    qDebug()<<"提交成功";
                }
                else
                {
                    qDebug()<<"提交失败";
                    db.rollback();
                }
            }
            else
            {
                qDebug()<<"更新失败";
                db.rollback();//回滚
            }
        }
        else
        {
            qDebug()<<"插入失败";
            db.rollback();//回滚事务
        }
    }
    else
    {
        qDebug()<<"开启事务失败";
    }
**3、线程操纵ui** Qt的子线程是不可以直接操纵ui的,一般的方法都是主线程操作ui,子线程进行数据处理,并且通过信号与槽和主线程相连接 或者通过QtPrivate::Invoke这个方法链接主线程 4、shared_ptr和unique_ptr指针 unique_ptr独立掌管对象的所有权,拷贝和赋值操作都被delete掉了,所以有一个release()方法用来转交对象所有权 而shared_ptr是通过计数器来掌管对象,可以多个指针指向同个对象,所以不需要release转交对象所有权
posted @ 2026-03-04 23:37  dd_l  阅读(0)  评论(0)    收藏  举报