实习第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


 
posted @ 2020-07-16 21:46  HenryAndrew  阅读(74)  评论(0)    收藏  举报