Qt注意事项

 

1.Qt中用到Sleep函数

windows下:

#include <windows.h>

Sleep(DWORD dwMilliseconds)       //毫秒   S大写

Linux下:

#include <unistd.h>

sleep(unsigned int seconds)         //秒    s小写

如果想要将主线程等待100ms,总不能使用sleep吧,那样会导致GUI界面停止响应的,但是用事件循环就可以避免这一点:

 QEventLoop loop;
 QTimer::singleShot(100, &loop, SLOT(quit()));
 loop.exec();

2.查看Qt数据库驱动

#include<QSqlDriver>    
#include<QSqlDatabase>    
#include<QDebug>    

qDebug()<<"Available drivers:";      
QStringList drivers=QSqlDatabase::drivers();      
foreach(QString driver,drivers)        
qDebug()<<driver; 

 

3.QTCreator打开总是未响应

删除~\AppData\Roaming\QtProject文件夹,然后再打开Qt Creator即可。
Linux下,~是/home/YourUserName
Windows下,~是C:\Users\YourUserName

 

4.获取布局中的控件相对窗口的坐标

qDebug()<<ui->pushButton->mapToGlobal(QPoint(0,0)).x();
qDebug()<<ui->pushButton->mapToGlobal(QPoint(0,0)).y();
 

5. Qt事务操作

事务是数据库的一个重要功能,所谓事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。在Qt中用transaction()开始一个事务操作,用commit()函数或rollback()函数进行结束。commit()表示提交,即提交事务的所有操作。具体地说就是将事务中所有对数据库的更新写回到数据库,事务正常结束。rollback()表示回滚,即在事务运行的过程中发生了某种故障,事务不能继续进行,系统将事务中对数据库的所有已完成的操作全部撤销,回滚到事务开始时的状态。
如下面的例子:
void Widget::on_pushButton_clicked()
{
    if(QSqlDatabase::database().driver()->hasFeature(QSqlDriver::Transactions))
    { //先判断该数据库是否支持事务操作
        if(QSqlDatabase::database().transaction()) //启动事务操作
        {
            //下面执行各种数据库操作
            QSqlQuery query;  //事务必须由同一个query执行SQL语句
            query.exec("insert into student values (14, 'hello')");
            query.exec("delete from student where id = 1");
            if(!QSqlDatabase::database().commit())
            {
                qDebug() << QSqlDatabase::database().lastError(); //提交
                if(!QSqlDatabase::database().rollback())
                    qDebug() << QSqlDatabase::database().lastError(); //回滚
             }
        }
    }
}

 

 

6.qt.network.ssl: QSslSocket: cannot call unresolved function SSLv23_client_method

Qt的这个目录下:D:\Qt\Qt5.4.2\Tools\mingw491_32\opt\bin。自带libeay32.dll和ssleay32.dll.

只需要把这个目录下的两个dll拷贝到D:\Qt\Qt5.4.2\5.4\mingw491_32\bin,就不会提示qt.network.ssl: QSslSocket: cannot call unresolved function SSLv23_client_method。

 

7.Unicode与GBK互相转换

QByteArray UserConfig::Unicode2GBK(QString inStr)
{
    QTextCodec* gbk = QTextCodec::codecForName("gbk");
    return gbk->fromUnicode(inStr);
}

QString UserConfig::GBK2Unicode(QByteArray inStr)
{
    QTextCodec* gbk = QTextCodec::codecForName("gbk");
    return gbk->toUnicode(inStr);
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值