零碎知识总结

   QProcess p(0);

    p.start("ipconfig");
    p.waitForStarted();

 p.waitForFinished();

 

 qDebug()<<QString::fromLocal8Bit(p.readAllStandardOutput());


 p.start("e://aa/" /"bb//123.exe");//带有空格的文件夹
 
 p.start("explorer.exe /n, d://");// 打开d盘目录

    //QString filename("c:/winrar/winrar.exe a c:/123.zip c:/123.exe");
QString filename("/"C://Program Files//WinZip//WINZIP32/" -a c:/123.zip c:/123.exe c:/222.exe");
 
 //aa.execute("/"C://Program Files//WinZip//WINZIP32/"");
aa.execute(filename);
aa.waitForStarted();
aa.waitForFinished();
Dos下面 这个可以压缩成zip格式



键盘自动按键
#include <windows.h>
http://www.cnblogs.com/chiniao/archive/2010/07/23/1783485.html    
keybd_event(65,0,0,0);
     keybd_event(65,0,KEYEVENTF_KEYUP,0);
数据库的基本操作:
在头文件中
static bool createConnection()
{
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("D:/ceshi.db");
    if (!db.open()) {
        return false;
    }
    QSqlQuery query;
      query.exec("create table student(id int primary key,name varchar)");
      query.exec("insert into student values(0,'fffff')");
      query.exec("insert into student values(1,'444444')");
      query.exec("insert into student values(2,'dddd')");
      query.exec("insert into student values(3,'jjjj')");
      query.exec("insert into student values(4,'ggggg')");
或者采用以下方法1
      query.prepare("insert into student values(:id,:name)");
      query.bindValue(":id",555);
      query.bindValue(":name","jjjjjjjjjjjjjjjjjjjjjj");
      或者
      query.bindValue(0,555);
      query.bindValue(1,"jjjjjjjjjjjjjjjjjjjjjj");
 
      query.exec();
或者采用以下方法2
 
      query.prepare("insert into student values(?,?)");
      query.bindValue(0,666);
      query.bindValue(1,"111jjjjjjjjjjjjjj");
      query.exec();
或者采用以下方法3
      query.prepare("insert into student values(?,?)");
      query.addBindValue(777);
      query.addBindValue("kkkkkkkkk");
      query.exec();
 
    return true;
}
 
主文件中进行判断

    if (!createConnection())

        return 1;

查询操作

    QSqlQuery query;

    query.exec("SELECT * FROM student WHERE id > 4");

    while (query.next())

    {

        int id = query.value(0).toInt();

        QString salary = query.value(1).toString();

        qDebug() << id << salary;

}

 

单一插入纪录方法

    query.prepare("INSERT INTO student (id, name) VALUES (:id, :name)");

    query.bindValue(":id", 1001);

query.bindValue(":name", "Thad Beaumont");

批量插入数据

 

    query.prepare("insert into student values (?, ?)");

    QVariantList ints;

    ints << 11 << 22 << 33 << 44;

    query.addBindValue(ints);

    QVariantList names;

    names << "Harald" << "Boris" << "Trond" << QVariant(QVariant::String);

    query.addBindValue(names);

    if (!query.execBatch())

        qDebug() << query.lastError();

   query.exec();

批量更新数据

   query.prepare("UPDATE student SET name = ? WHERE id = 777");

    //query.bindValue(":id", 70000);

    query.bindValue(":name", "oooooooo");

    query.exec();

删除数据

query.exec("DELETE FROM student WHERE id = 666");

 

 

快速查找记录行数

QSqlDriver::hasFeature(QSqlDriver::QuerySize)例子,可以较快的统计查询记录行数。

 

    int numRows;

    query.exec("SELECT * FROM student WHERE id > 4");

    QSqlDatabase defaultDB = QSqlDatabase::database();

    if (defaultDB.driver()->hasFeature(QSqlDriver::QuerySize)) {

        numRows = query.size();

    } else {

         // this can be very slow

         query.last();

         numRows = query.at() + 1;

}

 

使用SQL Model类

 

QSqlQueryModel:一个只读的读取数据库数据的模型。

 

QSqlTableModel:一个可读写的单一表格模型,可以不用写SQL语句。

 

QSqlRelationalTableModel:QSqlTableModel的一个子类,可多表关联在一起。

 

这些类都继承于QAbstractTableModel,而它们又都继承于QAbstractItemModel。

 

QSqlQueryModel

    QSqlQueryModel model;

    model.setQuery("SELECT * FROM student");

    for (int i = 0; i < model.rowCount(); ++i)

    {

        int id = model.record(i).value("id").toInt();

        QString name = model.record(i).value("name").toString();

        qDebug() << id << name;

    }

 

QSqlTableModel 可对单一表操作,进行读写操作。

//读取数据

QSqlTableModel model;

model.setTable("student ");

model.setFilter("salary > 50000");

model.setSort(2, Qt::DescendingOrder);

model.select();

for (int i = 0; i < model.rowCount(); ++i) {

    QString name = model.record(i).value("name").toString();

    int salary = model.record(i).value("salary").toInt();

    qDebug() << name << salary;

}

model.submitAll();

 

 

//通过QSqlTableModel::setData()来update一条记录

model.setData(model.index(row, column), 75000);

model.submitAll();

//insert一条记录

model.insertRows(row, 1);

model.setData(model.index(row, 0), 1013);

model.setData(model.index(row, 1), "Peter Gordon");

model.setData(model.index(row, 2), 68500);

model.submitAll();

//delete一条记录

model.removeRows(row, 5);

model.submitAll();

 

 

//显示所有可用的数据库

    qDebug() << "Available drivers:";
    QStringList drivers = QSqlDatabase::drivers();
    foreach(QString driver, drivers)
    qDebug() << "/t" << driver;
    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
    qDebug() << "ODBC driver valid?" << db.isValid();

 

修改字体大小和颜色

一是使用setPalette()方法;二是使用样式表;三是可以使用QStyle;四是可以在其中使用一些简单的HTML样式。下面就具体说一下,也算是个总结吧。

第一种,使用setPalette()方法如下:

QLabel *label = new QLabel(tr("Hello Qt!"));

QPalette pe;
pe.setColor(QPalette::WindowText,Qt::white);
label->setPalette(pe);

第二种,使用样式表如下:

setstylesheet(font-color:your color);

ui->label->setStyleSheet("color:rgb(255,0,0);");

常见rgb颜色对照表网址http://jsxzjh.bokee.com/3744988.html

//具体情形可以看Qt Assistant

第三种,使用QStyle,在Qt Demo中有一个很好的讲解QStyle的例子,可以参考学习。

第四种,使用一些简单的HTML格式:

QLabel *label = new QLabel(tr("Hello Qt!"));

QLabel *label = new QLabel("<h2><i>Hello</i><font color=red>Qt!</font></h2>");

QT中的随机函数的用法

首先是初始化:

qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));

接着就可以随机了:

qrand()理论上返回0 到 RAND_MAX间的值。

如果要返回0~n间的值,则为:qrand()%n;

如果要返回a~b间的值,则为:a + qrand() % (b - a)

这里介绍2种方法

头文件都必须的,不多说了:   #include<QTime>

其中一个:

函数中:

      QTime t;

       t= QTime::currentTime();

       qsrand(t.msec()+t.second()*1000);

       int n = qrand();

还有一个简单方法:
qsrand(time(NULL));

int n = qrand();

这2句不一定要连着,前边初始化种子可以在程序开始的时候就初始化。

如果2句连在一起,并且又同时出现在for循环中,就容易产生相同的随机数。

关于srand的说明:(百科)

 srand函数是随机数发生器的初始化函数。

原型:void srand(unsigned seed);   

用法:它需要提供一个种子,如: srand(1); 直接使用1来初始化种子。不过常常使用系统时间来初始化,即使用 time函数来获得系统时间,它的返回值为从 00:00:00 GMT, January 1, 1970 到现在所持续的秒数,然后将time_t型数据转化为(unsigned)型再传给srand函数,即: srand((unsigned) time(&t)); 还有一个经常用法,不需要定义time_t型t变量,即: srand((unsigned) time(NULL)); 直接传入一个空指针,因为你的程序中往往并不需要经过参数获得的t数据。srand((int)getpid()); 使用程序的ID(getpid())来作为初始化种子,在同一个程序中这个种子是固定的。

    QTime t;

           t= QTime::currentTime();

           qsrand(t.msec()+t.second()*1000);

           int n = qrand()%10;

     qDebug()<<n;

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值