QTabelWidget表格的插入、删除、更新以及配合QFile进行表格内容的长期存储

  • 【1】QTabelWidget界面初始化
  • 【2】QTabelWidget效果图
  • 【3】QTabelWidget初始化
  • 【4】QTabelWidget内容写入文件和读出
  • 【5】QTabelWidget插入表格和写入文件
  • 【6】QTabelWidget写文件函数和都文件函数
  • 【7】QTabelWidget表格上下页
  • 【8】QTabelWidget表格滑动事件Event

想实现表格 每一步都不能错过

【1】QTabelWidget界面初始化

【2】QTabelWidget效果图

【3】QTabelWidget初始化

/******************************************************************清洗日志表格初始化******************************************************/
void MainWindow::MenuRinseLogInit()
{ui->PB_updatetabl->hide();//刷新表格按钮  清洗结束才出现//对表格的初始化ui->tableWidget_rinselog->setRowCount(0);                   // 设置表格行数ui->tableWidget_rinselog->setColumnCount(4);                 // 设置表格列数//添加表头内容QStringList tablehead;tablehead.append(tr("清洗模式"));tablehead.append(tr("开始时间"));tablehead.append(tr("结束时间"));tablehead.append(tr("总清洗时间"));ui->tableWidget_rinselog->setHorizontalHeaderLabels(tablehead);ui->tableWidget_rinselog->setShowGrid(true);//设置显示网格//表头风格ui->tableWidget_rinselog->horizontalHeader()->setStyleSheet("QHeaderView::section{background-color:rgb(189,255,253);""font:15pt;color: black;};");//设置表头第一行风格//表格内容风格ui->tableWidget_rinselog->setStyleSheet("background-color:rgb(255,255,255);""color: blue;");QFont font =ui->tableWidget_rinselog->font();font.setBold(false);//不加粗font.setFamily("PingFang SC Medium");ui->tableWidget_rinselog->setFont(font);//设置字体ui->tableWidget_rinselog->verticalHeader()->setHidden(true); //隐藏行号列ui->tableWidget_rinselog->resizeColumnsToContents();//表格所有列自动适应文本大小ui->tableWidget_rinselog->resizeRowsToContents();//表格所有行自动适应文本大小ui->tableWidget_rinselog->setEditTriggers(QAbstractItemView::NoEditTriggers);  //   设置表格内容不可编辑ui->tableWidget_rinselog->horizontalHeader()->setResizeContentsPrecision(QHeaderView::Fixed);  //设置表头不可拖动ui->tableWidget_rinselog->setSelectionMode(QAbstractItemView::NoSelection);       //设置表格内容不可选ui->tableWidget_rinselog->horizontalHeader()->setStretchLastSection(true); //行头自适应表格ui->tableWidget_rinselog->horizontalHeader()->setFixedHeight(30);//设置表头高度ui->tableWidget_rinselog->verticalHeader()->setDefaultSectionSize(30);//设置行高度//ui->tableWidget_rinselog->setFrameShape(QFrame::StyledPanel);//设置边框跟单元格差不多//去除选中虚线框ui->tableWidget_rinselog->setFocusPolicy(Qt::NoFocus);//点击表时不对表头行光亮(获取焦点)ui->tableWidget_rinselog->horizontalHeader()->setHighlightSections(false);ui->tableWidget_rinselog->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);//平均列宽,固定ui->tableWidget_rinselog->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);//垂直滚动条显示ui->tableWidget_rinselog->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded);//水平滚动显示//设置纵向滚动条样式ui->tableWidget_rinselog->verticalScrollBar()->setStyleSheet("QScrollBar{background-color:rgb(255,255,255); width:30px;}""QScrollBar::handle{background-color:rgb(189,255,253); border:2px solid transparent; border-radius:5px;}""QScrollBar::handle:hover{background-color:rgb(189,255,253);}""QScrollBar::sub-line{background:transparent;}""QScrollBar::add-line{background:transparent;}");//        //设置横向滚动条样式
//            ui->tableWidget_rinselog->horizontalScrollBar()->setStyleSheet(
//                    "QScrollBar{background-color:rgb(255,255,255); height:20px;}"
//                    "QScrollBar::handle{background-color:rgb(255,170,0); border:2px solid transparent; border-radius:5px;}"
//                    "QScrollBar::handle:hover{background-color:rgb(255,170,0);}"
//                    "QScrollBar::sub-line{background:transparent;}"
//                    "QScrollBar::add-line{background:transparent;}");ui->tableWidget_rinselog->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel);//设置滑动效果//设置手动滑动事件m_scrollBarV = ui->tableWidget_rinselog->verticalScrollBar();QObjectList objectList = ui->tableWidget_rinselog->children();for(int i = 0; i < objectList.count(); i++){if(objectList.at(i)->objectName() == "qt_scrollarea_viewport"){objectList.at(i)->installEventFilter(this);}}//设置表格一直显示最后内容=========================在每次插入都要写这个  不然不会定位到最后ui->tableWidget_rinselog->scrollToBottom();//使用进度条表示写了多少ui->progressBar__tab->setRange(0,100);ui->progressBar__tab->setValue(0);ui->progressBar__tab->hide();
}

【4】QTabelWidget内容写入文件和读出

/*************************************************************表格加载进文件和文件加载进表格***********************************************/
/*实际表格内容在机子重启后会消失,所以需要写进文件,下次开机从文件写入*/
QString MainWindow::LoadTabtoFileOrFileLoadtoTab(QString tabelflag)
{//设置标志位 开机 关机if(tabelflag == "写入文件" )//将今日清洗的数据全部存入文件  ====================[放在清洗结束关机前]{QString alldata;QString writeRowClumAlldata;//17行  4列uint32_t row = ui->tableWidget_rinselog->rowCount();//获取行uint8_t colum =ui->tableWidget_rinselog->columnCount();//获取列qDebug()<<"行 列  "<<row<<colum<<endl;if(row == 0 &&(colum == 4))//今日未清洗,表格没插入{qDebug()<<"there is no rinse record today"<<endl;return "";}//使用静态变量存储表格内容for(unsigned int i=row;i<=row;i++)//一行一行的写入文件{QTableWidgetItem *item1 = ui->tableWidget_rinselog->item(i-1,2);//获取单元格地址if(item1 == NULL){//跳过不写入//跳过  }else{for(unsigned int j=0;j<colum;j++){qDebug()<<"行内容="<<ui->tableWidget_rinselog->item(i-1,j)->text()<<endl;alldata.append(ui->tableWidget_rinselog->item(i-1,j)->text()+"@");//最后带@}//qDebug()<<"alldata="<<alldata<<endl;//存储进文件包括:行,列,表格所有内容writeRowClumAlldata = QString("%1@%2@%3").arg(row).arg(colum).arg(alldata);//qDebug()<<"writeRowClumAlldata="<<writeRowClumAlldata<<endl;//写入文件datastorage.DataStorageManage(writeRowClumAlldata,RinseLog);//实际内容:行 列 数据  \n}}}else if(tabelflag == "写入表格")//加载进表格=================================[在开机初始化时]{qDebug()<<"flag="<<tabelflag<<endl;//每次点击下一页 页码++//读取5行4列内容=================从文件读取数据  每次读取17行  自行选择QString readRowClumAlldata = datastorage.ReadStorageRinseLogData(RinseLog,17,"下一页");//包括换行符if(readRowClumAlldata=="" || readRowClumAlldata=="\n")//文件空{qDebug()<<"file  data is empty"<<endl;return readRowClumAlldata;}QStringList list = readRowClumAlldata.split("\n");//分割qDebug()<<"readRowClumAlldata="<<readRowClumAlldata<<endl;qDebug()<<"list_size="<<list.size()<<"list="<<list<<endl;list.removeLast();//删除最后一个无用字符qDebug()<<"list_size="<<list.size()<<"list="<<list<<endl;for (int i=0;i<list.size();i++)//=17执行十七遍{QStringList listdata= QString("%1").arg(list.at(i)).split("@");listdata.removeLast();//删除最后一个无用字符uint32_t row = listdata.at(0).toInt();uint8_t colum = listdata.at(1).toInt();if(row == 0 &&(colum == 4))//今日未清洗{qDebug()<<"there is no rinse record today"<<endl;return "";}qDebug()<<"行 列  数据"<<row<<colum<<listdata<<endl;//删除行列listdata.removeFirst();//行listdata.removeFirst();//列ui->tableWidget_rinselog->insertRow(ui->tableWidget_rinselog->rowCount());//不管值等于多少,每次只插入一行for (unsigned int j=0;j<colum;j++){if(j == 0){//清洗模式ui->tableWidget_rinselog->setItem(ui->tableWidget_rinselog->rowCount()-1,j,new QTableWidgetItem(tr(listdata.at(j).toUtf8())));//设置对齐ui->tableWidget_rinselog->item(ui->tableWidget_rinselog->rowCount()-1,j)->setTextAlignment(Qt::AlignCenter|Qt::AlignVCenter);}else if(j==1){//开始时间ui->tableWidget_rinselog->setItem(ui->tableWidget_rinselog->rowCount()-1,j,new QTableWidgetItem(tr(listdata.at(j).toUtf8())));//设置对齐ui->tableWidget_rinselog->item(ui->tableWidget_rinselog->rowCount()-1,j)->setTextAlignment(Qt::AlignCenter|Qt::AlignVCenter);}else if(j==2){//结束时间ui->tableWidget_rinselog->setItem(ui->tableWidget_rinselog->rowCount()-1,j,new QTableWidgetItem(tr(listdata.at(j).toUtf8())));//设置对齐ui->tableWidget_rinselog->item(ui->tableWidget_rinselog->rowCount()-1,j)->setTextAlignment(Qt::AlignCenter|Qt::AlignVCenter);}else if(j==3){//总时间ui->tableWidget_rinselog->setItem(ui->tableWidget_rinselog->rowCount()-1,j,new QTableWidgetItem(tr(listdata.at(j).toUtf8())));//设置对齐ui->tableWidget_rinselog->item(ui->tableWidget_rinselog->rowCount()-1,j)->setTextAlignment(Qt::AlignCenter|Qt::AlignVCenter);}}//执行一次,删除列表4个元素  元素个数=行*列listdata.removeFirst();listdata.removeFirst();listdata.removeFirst();listdata.removeFirst();//qDebug()<<"listdata="<<listdata<<"listdata_size"<<listdata.size()<<endl;}ui->tableWidget_rinselog->scrollToBottom();//滑动条最底部}else//不满足条件调用此函数时  直接返回{return "";}return "1";}

【5】QTabelWidget插入表格和写入文件

 //插入1行ui->tableWidget_rinselog->insertRow(ui->tableWidget_rinselog->rowCount());//尾插 依次往后//清洗模式  某行0列插入ui->tableWidget_rinselog->setItem(ui->tableWidget_rinselog->rowCount()-1,0,new QTableWidgetItem(tr("强制冲洗")));//设置对齐  垂直和居中ui->tableWidget_rinselog->item(ui->tableWidget_rinselog->rowCount()-1,0)->setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter);//开始时间QStringList split = ui->label_time->text().split(":");split.removeLast();endtime = split.at(0).toInt()*60+split.at(1).toInt();//总强制冲洗分钟QString add = QString("%1:%2").arg(split.at(0)).arg(split.at(1));; //静态变量只初始化一次 2022/1/1//开始时间只显示一次ui->tableWidget_rinselog->setItem(ui->tableWidget_rinselog->rowCount()-1,1,new QTableWidgetItem(tr("%1%2%3").arg(ui->label_date->text()).arg(" ").arg(add)));//设置对齐ui->tableWidget_rinselog->item(ui->tableWidget_rinselog->rowCount()-1,1)->setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter);ui->tableWidget_rinselog->hideRow(currRow);//隐藏行,读在表格时在显示
//结束时间=系统时间+清洗总时间
static uint32_t totalmin = endtime+starttime;
uint8_t hh =totalmin/60;
uint8_t min =totalmin%60;
QString h ;
QString m;
if(hh<10){h =QString("0%1").arg(hh);
}
else{h=QString("%1").arg(hh);
}
if(min<10){m =QString("0%1").arg(min);
}else
{m=QString("%1").arg(min);;
}
currow = currRow;//不管在那种清洗模式  切换回来后还是这个清洗模式的行
rinsehh = h;//结束时间 小时
rinsemm = m; // 结束时间 分钟
rinsetotaltime = starttime;//总时间
ui->tableWidget_rinselog->showRow(currow);//显示行
//结束时间
ui->tableWidget_rinselog->setItem(currow,2,new QTableWidgetItem(tr("%1 %2:%3").arg(ui->label_date->text()).arg(rinsehh).arg(rinsemm)));
ui->tableWidget_rinselog->repaint();
//设置对齐
ui->tableWidget_rinselog->item(currow,2)->setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter);
//总时间=ui->label_rinseleft的开始时间
ui->tableWidget_rinselog->setItem(currow,3,new QTableWidgetItem(tr("%1小时%2分钟").arg(rinsetotaltime/60).arg(rinsetotaltime%60)));
ui->tableWidget_rinselog->repaint();
//设置对齐
ui->tableWidget_rinselog->item(currow,3)->setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter);
datastorage.DataStorageManage(QString("强制冲洗 》= 2 %1 水洗:总时间=%2 固定时间=%3").arg(QDateTime::currentDateTime().toString("hh:mm:ss")).arg(ui->label_rinseleft->text().toUInt()).arg(ui->stage1_time_1->text()),PrintfLog);//实际内容:行 列 数据  \n
ui->tableWidget_rinselog->viewport()->update();//刷新内容
ui->tableWidget_rinselog->update();//刷新控件
ui->tableWidget_rinselog->show();
ui->widget_10->update();//刷新
ForcedRinseFlag = 0;//不去后台看清洗日志直接写入文件,或者在清洗界面连续水洗
LoadTabtoFileOrFileLoadtoTab("写入文件");

【6】QTabelWidget写文件函数和都文件函数

 if(type == RinseLog)//存储清洗日志{QFile file;file.setFileName(RinseLogStoragePath);if(!file.open(QIODevice::WriteOnly | QIODevice::Append)){//追加写入 每次一行qDebug()<<"RinseLogStorageFIle open fail";return;}//表格数据会将每天的数据显示在清洗日志,然后和今天的清洗内容一起写入吧表格,为防止重复,每次写入清空file.write(data.toUtf8());file.close();}
/*=======================清洗日志表格,只能一行一行获取===============*/
QString dataStorage::ReadStorageRinseLogData(StorageType type,uint32_t LineNum,QString page)
{//当一行数据行小于10,大小占74QString FilePath;QString filedata;static uint64_t filepos=0;//表格页码控制=============表格1页=17行filedata.clear();if(type == RinseLog){FilePath =RinseLogStoragePath;}QFile file(FilePath);if(!file.open(QIODevice::ReadOnly)){qDebug()<<file.errorString()<<endl;return "";}qDebug() << "文件大小:"<< file.size()<<endl;filesize=file.size();//获取文件大小------------------随时变化QTextStream out(&file);//使用文本流来控制if(page =="下一页" && LineNum == 17){file.seek(filepos);//=============================设置每次读取后光标移动for(uint32_t i=1;i<=LineNum;i++){QByteArray filearray = file.readLine();//1@4@水洗@开始时间@结束时间@总时间@\nfiledata.append(filearray);}filepos = out.pos();//============================记录最后的文本光标filepossize=filepos;qDebug()<<"下一页file->pos="<<filepos<<endl;}qDebug()<<"filedata1="<<filedata<<endl;file.close();return filedata;
}

【7】QTabelWidget表格上下页

connect(ui->PB_updatetabl, SIGNAL(clicked()), this, SLOT(PB_SystemAndRinseLog()));

/*表格:系统日志和清洗日志处理槽函数的处理*/
void MainWindow::PB_SystemAndRinseLog()
{QPushButton *button = qobject_cast<QPushButton *>(sender());if(button == ui->PB_updatetabl)//代码自动点击实现clik{//离线模式清洗自动停止开启的解决ui->tableWidget_rinselog->showRow(currow);//显示行//结束时间ui->tableWidget_rinselog->setItem(currow,2,new QTableWidgetItem(tr("%1 %2:%3").arg(ui->label_date->text()).arg(rinsehh).arg(rinsemm)));//设置对齐ui->tableWidget_rinselog->item(currow,2)->setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter);//总时间=ui->label_rinseleft的开始时间ui->tableWidget_rinselog->setItem(currow,3,new QTableWidgetItem(tr("%1小时%2分钟").arg(rinsetotaltime/60).arg(rinsetotaltime%60)));//设置对齐ui->tableWidget_rinselog->item(currow,3)->setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter);datastorage.DataStorageManage(QString("ui->PB_updatetabl %1 水洗:总时间=%2 固定时间=%3").arg(QDateTime::currentDateTime().toString("hh:mm:ss")).arg(ui->label_rinseleft->text().toUInt()).arg(ui->stage1_time_1->text()),PrintfLog);//实际内容:行 列 数据  \nui->PB_updatetabl->hide();LoadTabtoFileOrFileLoadtoTab("写入文件");}else if(button == ui->PB_uppage)//上一页{ui->progressBar__tab->hide();pageflag=1;ui->tableWidget_rinselog->verticalScrollBar()->setValue(ui->tableWidget_rinselog->verticalScrollBar()->value()-520);//qDebug()<<"上一页滑动条的值="<< ui->tableWidget_rinselog->verticalScrollBar()->value()<<endl;}else if(button == ui->PB_downpage)//下一页{static bool endflag=false;if(pageflag ==1 && ui->tableWidget_rinselog->rowCount() >17){ui->progressBar__tab->hide();ui->tableWidget_rinselog->verticalScrollBar()->setValue(ui->tableWidget_rinselog->verticalScrollBar()->value()+520);}if(endflag == false)//============作用:只在读取文件时进入{ui->progressBar__tab->show();QString readRowClumAlldata =  LoadTabtoFileOrFileLoadtoTab("写入表格");if(readRowClumAlldata==""){qDebug()<<"readRowClumAlldata"<<readRowClumAlldata<<endl;ui->tableWidget_rinselog->scrollToBottom();//滑动条最底部}uint64_t filesize =  datastorage.filesize;uint64_t filepos =  datastorage.filepossize;if(filesize ==filepos ){endflag =true;}int value = 100-(filepos%filesize)%100;//qDebug()<<"filesize"<<filesize<<"filepos"<<filepos<<"value"<<value<<endl;data_lib->SendttyAT0(tr("【=====filesize======】%1【=====filepos=====】%2【====value====】").arg(filesize).arg(filepos).arg(value));ui->progressBar__tab->setValue(value);if(value == 100){ui->progressBar__tab->setStyleSheet("color:red");ui->progressBar__tab->update();}}}
}

【8】QTabelWidget表格滑动事件Event

bool MainWindow::eventFilter(QObject *watched, QEvent *event)
{/******************************表格拖动事件*************************************/static int press_y   = 0;static int move_y    = -1;static int release_y = 0;static QDateTime pressDateTime;static QPropertyAnimation *animation = new QPropertyAnimation;if("qt_scrollarea_viewport" != watched->objectName()){return false;}int scrollV_max = m_scrollBarV->maximum ();int scrollV_min = m_scrollBarV->minimum ();//根据鼠标的动作——按下、放开、拖动,执行相应的操作if(event->type() == QEvent::MouseButtonPress){//记录按下的时间、坐标pressDateTime = QDateTime::currentDateTime();move_y  = QCursor::pos().y();press_y = move_y;animation->stop();}else if(event->type() == QEvent::MouseButtonRelease){//鼠标放开,根据鼠标拖动的垂直距离和持续时间,设置窗口滚动快慢程度和距离if(animation->targetObject() != m_scrollBarV){animation->setTargetObject(m_scrollBarV);animation->setPropertyName("value");}move_y = -1;release_y = QCursor::pos().y();qDebug()<<"MouseButtonRelease QCursor::pos().y()="<<QCursor::pos().y();QObject *parent_obj = watched->parent();if(parent_obj != 0 || parent_obj->inherits("QAbstractItemView")){QTimer::singleShot(150, (QAbstractItemView *)parent_obj, SLOT(clearSelection()));}int endValue = 0;int pageStep;if(release_y - press_y != 0 && qAbs(release_y - press_y) > 45){qDebug()<<"obj->objectName()="<<watched->objectName();int mseconds = pressDateTime.msecsTo(QDateTime::currentDateTime());qDebug()<<"mseconds="<<mseconds;int limit = 440;pageStep = 240;//scrollBarV->pageStep();qDebug()<<"pageStep="<<pageStep;if(mseconds > limit)//滑动的时间大于某个值的时候,不再滚动(通过增加分母){mseconds = mseconds + (mseconds - limit) * 20;}if(release_y - press_y > 0){endValue = m_scrollBarV->value()- pageStep * (200.0 / mseconds);//.0避免避免强制转换为整形if(scrollV_min > endValue){endValue = scrollV_min;}}else if(release_y - press_y < 0){endValue = m_scrollBarV->value() + pageStep * (200.0 / mseconds);if(endValue > scrollV_max){endValue = scrollV_max;}}if(mseconds > limit){mseconds = 0;//滑动的时间大于某个值的时候,滚动距离变小,减小滑动的时间}animation->setDuration(mseconds + 550);animation->setEndValue(endValue);animation->setEasingCurve(QEasingCurve::OutQuad);animation->start();return true;}}else if(event->type() == QEvent::MouseMove && move_y >= 0){//窗口跟着鼠标移动int move_distance = QCursor::pos().y() - move_y;int endValue = m_scrollBarV->value() - move_distance;if(scrollV_min > endValue){endValue = scrollV_min;}if(endValue > scrollV_max){endValue = scrollV_max;}m_scrollBarV->setValue(endValue);qDebug()<<"endValue="<<endValue;qDebug()<<"move_distance="<<move_distance;move_y = QCursor::pos().y();}return QMainWindow::eventFilter(watched,event);}
/******************************表格拖动事件*************************************/

over 祝你好运

QTabelWidget表格的插入、删除、更新、动态滑动条以及配合QFile进行表格内容的长期存储相关推荐

  1. oracle+表的更新日志,测试oracle插入 删除 更新表的日志开销

    ###############测试插入 删除 更新表的日志开销 创建表 SYS@orcl >create table ssr(id int); 查询表空间,sys默认system,插入数据后此分 ...

  2. mysql利用外连接删除数据_MySQL-快速入门(6)连接查询、子查询、正则表达式查询、数据的插入删除更新...

    1.内连接查询:inner join ... on 只有满足条件的记录才能够出现在结果关系中,即完全相等.自连接查询是一种特殊的内连接查询. 2.外连接查询: 1>左外连接 / 左连接:返回包括 ...

  3. JQuery Slider 实现时间刻度滑动条,用以编辑项目/起始时间(手动输入可自动更新到滑动条)

    最近公司项目应客户要求,web端需要跟桌面端一样实现通过滑动条设置计划起始时间,所以就研究了一下Slider插件,被搞惨了.下面简单描述一下需求. 需求场景:首先,要使用滑动条进行方式进行计划起始时间 ...

  4. 小程序自制自带滑动条的表格组件

    小程序自制自带滑动条的表格组件 在编写过程中遇到的难点 1. 表格的编写 2. 表格内容宽度固定 长度自适应 3. 滚动条逻辑及代码编写 4. 滚动条的卡段优化 5. 小程序组件的编写及应用 尾声 先 ...

  5. layui框架数据表格的批量删除

    layui框架数据表格的批量删除操作 此文献为layui框架的数据表格的批量删除,批量删除顾名思义就是把大量的数据进行删除操作 由于有点项目数据繁多,如果在要删除的时候一个一个的删除的话,就会很麻烦. ...

  6. word表格分开快捷键_Word利用快捷键在两张以上无缝表格之间或表格前插入文字...

    在制作 Word 文档过程中,偶尔会遇到这样一种情况,就是要在两张或多张无缝表格之间插入文字,由于输入文字前必须插入光标,恰恰在无缝表格之间不容易插入光标,应该怎么办呢?毫无疑问把表格分离,至于如何分 ...

  7. layui表格更改一列数据_【WEB前端开辟】layui表格数据变动的一种处理方式

    表格数据更改,平常包括几个内容:新增.修正.删除.挪动,开辟中常常会面对的一个题目就是更改以后怎样将数据同步到节点上,一向以来个人的提议照样应用表格重载,不管是url情势的照样data情势的实际都是须 ...

  8. HighGUI图像用户界面初步(滑动条、鼠标操作)

    文章目录 1.Mat类简析 2.图像的载入:imread()函数 3.图像的显示:imshow()函数 4.创建窗口:namedWindow()函数 5.输出图像到文件:imwrite()函数 6.综 ...

  9. C/C++ OpenCV滑动条的创建与使用

    滑动条(Trackbar)是Opencv动态调节参数的一个工具,他依附于窗口存在 创建滑动条:createTrackbar() int createTrackbar( const string& ...

最新文章

  1. swift_029(Swift 的泛型)
  2. android万年历有什么作用,基于android的万年历农历怎么算
  3. jQuery EasyUI使用教程之创建可折叠面板
  4. Linux是不是共享软件,linux – 是否有可能在应用程序之间共享Cuda上下文?
  5. CentOS 安装及使用 terraform 最新教程
  6. java合并list_怎么把两个list合并
  7. 前端学习(1818):前端面试题之封装函数之进行字符串驼峰的命名
  8. 前端性能优化之Lazyload
  9. mac地址和ip地址的区别(转)
  10. python位运算符_NumPy按位运算符解析和实例详解
  11. mysql屏蔽_MySQL中的企业数据屏蔽
  12. java语言程序设计 第八版 基础篇_Java语言程序设计基础篇(第八版)编程8.7答案
  13. 毕设题目:Matlab图像修复
  14. 普元eos如何在日志文件中打印SQL语句及参数
  15. centos6.6搭建LANP环境(yum)
  16. TensorFlow分类任务入门
  17. DES算法的介绍和实现(转的,其实3des一样的原理就是加密解密加密而已)
  18. 一句话马密码暴力破解篇(黑吃黑)
  19. idea很带劲的插件
  20. Android 自定义相机 Camera 图片方向问题

热门文章

  1. Personalized Edge Intelligence via Federated Self-Knowledge Distillation, TPDS 2023
  2. 《2022中国企业数智化转型升级服务全景图/产业图谱2.0版》重磅发布
  3. 【主成分分析】PCA降维算法及Matlab代码实现
  4. python爬虫采集66代理(66IP)并验证可用性
  5. 电信诈骗为何如此难以根治?
  6. Java大数据方向学习路径导航
  7. unix sed命令
  8. integral_constant定义编译期常量
  9. APM固件自动巡航车测评与SLAM路径规划
  10. 小白也能看懂:最全无线渗透测试与攻防+Fluxison钓鱼教程+路由器安全设置指南 2021.3.31