当前位置: 首页 > news >正文

seo网站点击量排名优化广元建设公司网站

seo网站点击量排名优化,广元建设公司网站,网站反链一般怎么做,足球网站模板文章目录 效果图概述功能点代码分析导航栏表格更新视图表格导出表格过滤 总结 效果图 概述 本案例用于对数据库中的数据进行显示等其他操作。数据库的映射,插入等功能看此博客框架:数据模型使用QSqlTableModel,视图使用QTableView&#xff0…

文章目录

      • 效果图
      • 概述
      • 功能点
      • 代码分析
        • 导航栏
        • 表格更新视图
        • 表格导出
        • 表格过滤
      • 总结

效果图

概述

  • 本案例用于对数据库中的数据进行显示等其他操作。数据库的映射,插入等功能看此博客
  • 框架:数据模型使用QSqlTableModel,视图使用QTableView,表格的一些字体或者控件之类的使用QStyledItemDelegate实现。
    导航栏的变化实时的传回给表格,所有的数据库表都实现继承一个表格类,根据表格本身的特性可以设置自己的委托。数据库使用一个单列类进行管理,包括数据库的读取 ,创建,数据插入,以及对模型的映射等。

功能点

  1. 自选每页显示行数
  2. 跳转指定页面
  3. 上下翻页,最后/最前一页跳转
  4. 表格导出
  5. 表格查询

代码分析

导航栏
  • 该部分不复杂主要和tableView进行联动
    void PageNavigator::SetCurrentPage(int page)
    {if (m_curPage == page){return;}if (page < 1){page = 1;}if (page > (int)m_maxPage){page = m_maxPage;}m_curPage = page;ui->labelCurPage->setText(QString("第%1页/共%2页").arg(m_curPage).arg(m_maxPage));UpdateButtonState();emit SigCurrentPageChanged(m_curPage); // 通知 table 刷新
    }
    
表格更新视图
  • 每次使用过滤时要格外注意语句的条件
    void QTablePages::updateTableView()
    {if (!m_dataModel)return;if (m_filter != QString()) // 有过滤条件的情况{int offset = (m_currentPage - 1) * m_pageLines;// 使用正则表达式来匹配LIMIT和OFFSET后面的数字QRegExp limitRegex("LIMIT\\s*(\\d+)");QRegExp offsetRegex("OFFSET\\s*(\\d+)");// 替换LIMITm_filter.replace(limitRegex, QString("LIMIT %1").arg(m_pageLines));// 替换OFFSETm_filter.replace(offsetRegex, QString("OFFSET %1").arg(offset));m_dataModel->setFilter(m_filter);m_dataModel->select();return;}int offset = (m_currentPage - 1) * m_pageLines; // 计算偏移量 要减1,因为从0开始m_dataModel->setFilter(QString("1=1 ORDER BY time DESC LIMIT %1 OFFSET %2").arg(m_pageLines).arg(offset));m_dataModel->select();
    }
    
表格导出
  • 简单的导出为csv格式,要是为excel格式,则需要引入excel的库
void QTablePages::exportToCSV()
{if (!m_dataModel)return;QFileDialog dialog(this);dialog.setOptions(QFileDialog::DontUseNativeDialog);dialog.setWindowTitle(tr("表格导出"));dialog.setAcceptMode(QFileDialog::AcceptSave);dialog.setNameFilter(tr("CSV Files (*.csv)"));dialog.setStyleSheet("color: white;");QString saveFileName;if (dialog.exec()){saveFileName = dialog.selectedFiles().first();QFileInfo fileInfo(saveFileName);if (fileInfo.suffix().toLower() != "csv"){saveFileName += ".csv"; // 如果用户没有输入.csv,则添加它}}// 如果用户取消了操作,则返回if (saveFileName.isEmpty())return;// 打开一个文件用于写入QFile file(saveFileName);if (!file.open(QIODevice::WriteOnly | QIODevice::Text)){// 处理错误return;}/// 重置过滤条件-查询所有数据int offset = getOffest();int totalPages = getTotalPages();QString filter = getFilter();m_dataModel->setFilter(QString("1=1"));m_dataModel->select();QTextStream out(&file);int columnCount = m_dataModel->columnCount() - 1;// 写入列标题 操作列不写入for (int i = 1; i < columnCount; i++){out << m_dataModel->headerData(i, Qt::Horizontal).toString();if (i < columnCount - 1)out << ",";}out << "\n";// 写入数据auto formatDateTime = [](const QDateTime &dateTime){return dateTime.toString("yyyy-MM-dd HH:mm:ss");};for (int i = 0; i < m_dataModel->rowCount(); i++){QSqlRecord record = m_dataModel->record(i);for (int j = 1; j < columnCount; j++){QSqlField field = record.field(j);if (field.type() == QVariant::DateTime){// 如果字段是日期时间类型,则格式化输出QDateTime dateTime = field.value().toDateTime();out << formatDateTime(dateTime);}else{// 其他字段按原样输出out << field.value().toString();}if (j < columnCount - 1)out << ",";}out << "\n";}// 关闭文件file.close();// 恢复过滤条件if (filter != QString()){m_dataModel->setFilter(filter);}else{m_dataModel->setFilter(QString("1=1 ORDER BY time DESC LIMIT %1 OFFSET %2").arg(totalPages).arg(offset));}m_dataModel->select();
}
表格过滤
  • 数据过滤的条件,要和导航栏的偏移分开获取,不然过滤会出现问题
void QTablePages::refreshData(const QString &dateFrom, const QString &dateTo, const QString &content)
{if (m_dataModel == nullptr)return;QString filter;// 获取日期范围QString dateFilter = "time BETWEEN '" + dateFrom + "' AND '" + dateTo + "'";// 获取内容过滤条件QString contentFilter;if (!content.isEmpty()){contentFilter = "content LIKE '%" + content + "%'";}// 构建最终的过滤条件if (!filter.isEmpty()){if (!dateFilter.isEmpty()){filter += " AND " + dateFilter;}if (!contentFilter.isEmpty()){filter += " AND " + contentFilter;}}else{if (!dateFilter.isEmpty()){filter = dateFilter;if (!contentFilter.isEmpty()){filter += " AND " + contentFilter;}}else if (!contentFilter.isEmpty()){filter = contentFilter;}}// 重置导航条数据m_dataModel->setFilter(filter);m_dataModel->select();m_pageNavBar->updateNavbar(m_dataModel->rowCount(), m_pageLines);// 计算偏移量,要减1,因为从0开始int offset = (m_currentPage - 1) * m_pageLines;// 添加排序、限制和偏移量到过滤条件if (!filter.isEmpty()){filter += " ORDER BY time DESC LIMIT " + QString::number(m_pageLines) + " OFFSET " + QString::number(offset);}else{filter = "1=1 ORDER BY time DESC LIMIT " + QString::number(m_pageLines) + " OFFSET " + QString::number(offset);}m_filter = filter;// 应用最终的过滤条件m_dataModel->setFilter(filter);m_dataModel->select();
}

总结

  • 知识理应共享,源码在此
  • 导航栏,表格这些功能基本上都是单独封装好的,可以直接拿来用的
http://www.yayakq.cn/news/862347/

相关文章:

  • 织梦网做企业网站需要授权吗旅游电商网站开发
  • 淄博网站建设选择臻动传媒网站建设 专项资金变更
  • 做二手车有哪些网站有哪些动态倒计时网站模板
  • php 英文网站模板百度网站收录更新
  • 给单位做网站需要多少钱河南网站seo优化
  • 专业做网站优化需要多久如何做一个漂亮的网页
  • 公司网站建设多少费用兴田德润在哪里帮忙做公司网站
  • 门户网站如何帮企业做宣传wordpress栏目迁移
  • 做付费软件网站网站规划与建设的案例分析
  • 齐齐哈尔做网站公司网站好玩新功能
  • 网站打开空白页wordpress增加ico图片
  • 没有公司怎么做网站杭州网站建设设计
  • 让做网站策划没经验怎么办客户引流的最快方法是什么
  • 专业一元夺宝网站建设石家庄最新今天消息
  • 什么网站广告做多手机登录电脑版qq
  • 南京学习做网站网页制作参考文献
  • 自己建设的网站有管理后台的登录wordpress侧边导航栏
  • 太仓手机网站建设价格wordpress做成微信小程序
  • 卡盟怎么网站怎么做商城网站建设的步骤
  • 做的网站浏览的越多越挣钱微信网站和手机网站的区别
  • 网站正在建设 mp4水泥网站营销方案怎么做
  • dede企业网站秀米官网登录入口
  • 杭州市社区建设网站开发一个小程序的价格
  • 北京建网站 优帮云怎么黑网站的步骤
  • 深圳深圳龙岗网站建设公司东莞做微信小程序的公司
  • 哪家高端网站建设好创新网站建设
  • 厦门人才网唯一官方网站登录入口家装室内设计培训班哪里
  • 广州购物网站wordpress会员等级插件
  • 官方建网站哪个好新平台怎么推广
  • 游戏网站建设免费版标书制作简单吗