实习第4天
今天上午主要讲了QT的进程的几个函数 主要是线程和本地时间显示和计时,下午主要讲了Linux系统下sqlite的基础使用 (最后彩蛋,从助教老师那里得到的一个计时器代码//嘻嘻)
qt线程
优点: 并发运行 效率高
线程--》start---->run (重新实现)
QThread a; //QThread *p= new QThread;
a.start();
qt定时器:
QTimer 类
1) 创建QTimer QTimer *p = new QTimer;
2)定时隔间时间到 会发出timeout信号
connect(p,SIGNAL(timeout),this,SLOT(timeoutdo()))
3)启动定时器
p->start(1000);
4.关闭 stop
5.删除
delete p;
------------------------------------------------------------------------------------------
数据库:
1.数据结构存储
2.数据库软件
SQL server
mysql
orcle
sqlite(PC)(嵌入式)
3.学习sqlite
1)安装数据库软件
1))下载源代码(sqlite),然后共享到linux中
cp /mnt/hgfs/sh/sqlite-autoconf-3240000.tar.gz /home/gec/
2))编译、安装 (ubu (x86))
1.创建新目录 ,后面用于存放编译成功能文件
mkdir sql
2. 解压
tar -xzvf sqlite-autoconf-3240000.tar.gz
cd sqlite-autoconf-3240000/
3.配置
./configure --prefix=/home/gec/sql
4.编译
make
5.安装
make install
6.设置系统环境
cd ~
vim .bashrc
-->在文件最后面增加
export PATH=/home/gec/sql/bin:$PATH
关闭终端,再重新打开
3)操作命令
常用命令
数据文件 ***.db
1.创建表
create table carinfo(cardid integer primary key not null,license text);
查看是否成功 .table
2.增加数据到表中
INSERTINTO[数据库名称].表名VALUES(记录内容)
INSERTINTO[数据库名称].表名(字段列表)VALUES(对应字段内容)
3.查数据
SELECT [DISTINCT][*|字段列表] FROM[数据库名称].表名
4.删除数据
DELETE FROM[数据库名称].表名 where 条件表达式
delete from carinfo where license like "A1000";
学生信息
学号 姓名 性别
最后QT计时秒表

main.cpp
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->pause->hide();//隐藏显示暂停/继续
ui->restart->hide();//隐藏显示重置/计次
//初始化计时器
count = 1;
mtimer = new QTimer();
mtime = new QTime(0,0,0,0);//初始化时间
connect(mtimer,SIGNAL(timeout()),this,SLOT(do_work()));//接收定时器信号
}
MainWindow::~MainWindow()
{
delete ui;
}
//开始
void MainWindow::on_start_clicked()
{
ui->pause->show();//显示暂停/继续
ui->restart->show();//显示重置/计次
ui->start->hide();//隐藏开始
mtimer->start(1);//启动定时器
ui->pause->setText("暂停");
ui->restart->setText("计次");
}
//暂停-继续
void MainWindow::on_pause_clicked()
{
if(mtimer->isActive())//定时器如果在工作
{
mtimer->stop();//暂停定时器
ui->pause->setText("继续");
ui->restart->setText("重置");
}
else//定时器没有工作
{
mtimer->start(1);//开始定时器
ui->pause->setText("暂停");
ui->restart->setText("计次");
}
}
//定时器任务计时
void MainWindow::do_work()
{
*mtime = mtime->addMSecs(1);//自加1毫秒
ui->show_time->setText(mtime->toString("hh:mm:ss zzz"));//显示计时时间
}
//重置-计次
void MainWindow::on_restart_clicked()
{
if(mtimer->isActive())
{
ui->show_count->addItem("第"+QString::number(count++)+"次:"+
mtime->toString("hh:mm:ss zzz"));//计次显示时间
ui->show_count->setCurrentRow(ui->show_count->count()-1);//返回当前行号从0开始所以减1
}
else
{
count = 1;//计次次数重置
ui->show_count->clear();//计次记录清空
ui->pause->hide();//隐藏暂停
ui->restart->hide();//隐藏计次
ui->start->show();//显示开始按键
mtime->setHMS(0,0,0,0);//重置时间为0
ui->show_time->setText(mtime->toString("hh:mm:ss zzz"));//显示时间
}
}
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QTimer>
#include <QTime>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_start_clicked();
void on_pause_clicked();
void do_work();
void on_restart_clicked();
private:
Ui::MainWindow *ui;
QTimer *mtimer;
QTime *mtime;
int count;
};
#endif // MAINWINDOW_H

浙公网安备 33010602011771号