常用总结
弹出一个QFileDialog 设置输出文件路径和文件名
方法 getSaveFilename()
代码:
QString filter = "文本文件(*.txt);;任意文件(*.*)";
QString curpath = QDir::currentPath();
QString aFileName = QFileDialog::getSaveFileName(this,"导出股票代码", curpath, filter);
- aFileName是文件名的绝对路径。
创建一个txt文件并向其中写入数据
创建txt文件:
- 先创建一个QFile类;
- 利用上面代码获取的文件名的绝对路径,设置文件对象的路径;
- 使用open()方法打开文件
- 使用QTextStream txt数据流写入数据。
- 写入完成后使用close()关闭文件。
TXT文件中写入换行
注意:在使用open打开文件时候需要添加QIODevice::Text标识,用于在windows或linux环境下的换行符转换。windows环境下换行符为:/r/n,而我们编程过程中习惯用 /n 用于换行。
QFile saveFile;
saveFile.setFileName(aFileName);
if(saveFile.open(QIODevice::WriteOnly|QIODevice::Text)){
QTextStream in(&saveFile);
in << "\n";
in << "123";
in << "132";
saveFile.close();
}
QT SQL命令在线程中执行
1 在主线程中连接数据库,在线程中执行耗时较长的sql命令
- 在主线程中建立连接
if(DB.isOpen()){
dingVoice();
QMessageBox::information(this, "完成", "已成功连接数据库\n",QMessageBox::Ok,QMessageBox::NoButton);
}else{
DB=QSqlDatabase::addDatabase("QMYSQL"); //添加数据库驱动
QSettings settings("DBoption.ini",QSettings::IniFormat);
qDebug()<< settings.value("dialogfordb/IP").toString()<<settings.value("dialogfordb/USER").toString()\
<<settings.value("dialogfordb/PASSWORD").toString();
DB.setHostName(settings.value("dialogfordb/IP").toString());
DB.setPort(settings.value("dialogfordb/PORT").toInt());
DB.setDatabaseName(settings.value("dialogfordb/DBNAME").toString());
DB.setUserName(settings.value("dialogfordb/USER").toString());
DB.setPassword(settings.value("dialogfordb/PASSWORD").toString());
if(!DB.open()){
QMessageBox::warning(this, "错误", "打开数据库失败"+DB.lastError().text()+"\n请进行数据库配置!",QMessageBox::Ok,QMessageBox::NoButton);
DB.close();
return;
}
- 创建sqlThread类,并创建传入QSqlDatabase 的方法
//传入数据库连接
void sqlThread::setDB(QSqlDatabase &DB)
{
//创建QSqlquery类,一定需要传入DB,否则会报 Driver not load错误
query = new QSqlQuery(DB);
}
void sqlThread::run()
{
//子线程执行以下程序
query->prepare("this is your sql command");
query->exec();
if(query->lastError().type() != QSqlError::NoError){
qDebug() << "error";
}
quit();
}