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

官方网站建设教程推广链接点击器app

官方网站建设教程,推广链接点击器app,网络设计的三个层次,在哪里找工作最靠谱问题描述:区分 QTableWidget 类的 clear() 和 clearContents() 的用法,以及可能由于这两个方法使用不当导致程序崩溃的原因分析 Qt 官方文档对 QTableWidget 类的 clear() 方法描述如下: [slot] void QTableWidget::clear() Removes all ite…

问题描述:区分 QTableWidget 类的 clear() 和 clearContents() 的用法,以及可能由于这两个方法使用不当导致程序崩溃的原因分析

Qt 官方文档对 QTableWidget 类的 clear() 方法描述如下:

[slot] void QTableWidget::clear()
Removes all items in the view. This will also remove all selections and headers. If you don't want to remove the headers, use QTableWidget::clearContents(). The table dimensions stay the same.

翻译过来就是,clear() 函数会删除表格中的所有单元格,也会删除选中的部分和表头,但不会改变原先设置的行数和列数

Qt 官方文档对 QTableWidget 类的 clearContents() 方法描述如下:

[slot] void QTableWidget::clearContents()
Removes all items not in the headers from the view. This will also remove all selections. The table dimensions stay the same.

翻译过来就是,clearContents() 函数会删除表格中的所有单元格,也会删除选中的部分,但不会删除表头,也不会改变原先设置的行数和列数

clear() 和 clearContents() 的相同点在于都会删除表格中的所有单元格,也会删除选中的部分,并且保持原先设置的行数和列数不变,区别在于 clear() 会删除表头,clearContents() 不会删除表头

在程序中如果对 clear() 和 clearContents() 方法调用不当,将会导致程序崩溃,究其原因在于这两个方法删除了表格中的所有单元格,导致了空指针,如果对空指针进行操作,将会使得程序崩溃

void clearTable()
{table->clear();      // 或者 table->clearContents()
}void setTableText(QVector<QStringList> textSL)
{for(int i=0; i<textSL.size(); i++){QStringList sl = textSL.at(i);for(int j=0; j<sl.size(); j++){table->item(i,j)->setText(sl.at(j));} }    
}

先下结论,上述代码会导致程序崩溃!!!

上述代码逻辑我们在程序中经常使用,clearTable() 函数清空表格内容,setTableText() 为表格所有单元格再赋新值。程序崩溃的原因在于 clear() 和 clearContents() 删除了表格中的所有单元格,导致了 table->item(i,j) 空指针,再调用 setText() 函数导致程序崩溃

为了解决上述空指针问题,需对代码进行修改,即清空内容的时候不要删除单元格,或者在调用单元格函数的时候先判断指针是否为空,如果为空,则为该单元格创建一个 QTableWidgetItem

方法1:清空内容的时候不要删除单元格

void clearTable()
{for(int i=0; i<table->rowCount(); i++){for(int j=0; j<table->columnCount(); j++){table->item(i,j)->setText("");}}
}void setTableText(QVector<QStringList> textSL)
{for(int i=0; i<textSL.size(); i++){QStringList sl = textSL.at(i);for(int j=0; j<sl.size(); j++){table->item(i,j)->setText(sl.at(j));} }    
}

方法2:在调用单元格函数的时候先判断指针是否为空,如果为空,则为该单元格创建一个 QTableWidgetItem 

void clearTable()
{table->clearContents();
}void setTableText(QVector<QStringList> textSL)
{for(int i=0; i<textSL.size(); i++){QStringList sl = textSL.at(i);for(int j=0; j<sl.size(); j++){if(!table->item(i,j)){QTableWidgetItem * item = new QTableWidgetItem;table->setItem(i,j,item);}table->item(i,j)->setText(sl.at(j));} }    
}
http://www.yidumall.com/news/47429.html

相关文章:

  • 柳州企业网站建设代发百度关键词排名
  • 中国人民银行网点流程优化
  • wap网站推荐系统清理优化工具
  • 工艺品网站怎么做百度秒收录软件
  • 国内校园网站建设交换友情链接前后必须要注意的几点
  • wordpress文章数量太原网站建设优化
  • 冒险岛钓鱼网站做啥用百度推广账号
  • 网页设计总结报告500字广州网站营销优化qq
  • linux WordPress上传插件需要ftpseo软件资源
  • 家居网站建设的需求分析武汉整站优化
  • 编程猫少儿编程官网seo优化入门教程
  • 网站登录窗口怎么做软文世界
  • 自己做的网站怎么删除怎样自己制作网站
  • 教你如何建设一个模板网站青岛seo百科
  • 寮步网站制作营销型网站建设总结
  • 手机网站设计软件seo教程书籍
  • 房屋出租网站模板十大室内设计网站
  • 什么是网络营销常见的手段有哪些旺道seo软件
  • 选择一个网站进行优化富阳网站seo价格
  • 网站的360快照怎么做seo网络优化师招聘
  • 新闻网站内容建设措施搜索引擎优化作业
  • 做擦边球的网站厦门seo优
  • 装修网网站建设市场营销策划ppt
  • 哪个网站做自媒体比较好上海网站推广服务
  • 专门做化妆品平台的网站有哪些百度网页版登录入口官网
  • 成都j网站制作青岛seo网站排名优化
  • 长春电商网站建设哪家好品牌全案策划
  • 学做网站怎么样天津站内关键词优化
  • 建设网站团队搜索引擎优化工具
  • 手机端网站开发多少钱软文营销的写作技巧有哪些