先说一下QTableWidget 与 QTabelView区别,刚开始感觉容易混淆,多理解理解会感觉实现的效果类似,只是实现的方式有区别:
QTableWidget是QTableView的子类,主要的区别是QTableView可以使用自定义的数据模型来显示内容(也就是先要通过setModel来绑定数据源);
而QTableWidget则只能使用标准的数据模型,并且其单元格数据是QTableWidgetItem的对象来实现的(也就是不需要数据源,将逐个单元格内的信息填好即可)。
主要体现在QTableView类中有setModel成员函数,而到了QTableWidget类中,该成员函数变成了私有。使用QTableWidget就离不开QTableWidgetItem。QTableWidgetItem用来表示表格中的一个单元格,正个表格都需要用逐个单元格构建起来。
先上图:
三种方式创建表格:
方式1:QT Designer 控件栏里托出来一个,直接使用;
方式2:QTableWidget *tableWidget = new QTableWidget( 3,2) ;
// 构造了一个QTableWidget的对象,并且设置为3行,2列;
方式3:可用下面的方法构造QTableWidget对象
QTableWidget *tableWidget = new QTableWidget;
tableWidget-> setRowCount( 3) ; //设置行数为3
tableWidget-> setColumnCount( 2) ; //设置列数为2
一.对QTableWidget本身的效果实现
将表格变为禁止编辑
在默认情况下,表格里的字符是可以更改的,比如双击一个单元格,就可以修改原来的内容,
如果想禁止用户的这种操作,让这个表格对用户只读,可以这样:
tableWidget-> setEditTriggers( QAbstractItemView::NoEditTriggers) ;
QAbstractItemView.NoEditTriggers是QAbstractItemView.EditTrigger枚举中的一个,都是触发修改单元格内容的条件:
QAbstractItemView.NoEditTriggers
0
No editing possible. 不能对表格内容进行修改
QAbstractItemView.CurrentChanged
1
Editing start whenever current item changes.任何时候都能对单元格修改
QAbstractItemView.DoubleClicked
2
Editing starts when an item is double clicked.双击单元格
QAbstractItemView.SelectedClicked
4
Editing starts when clicking on an already selected item.单击已选中的内容
QAbstractItemView.EditKeyPressed
8
Editing starts when the platform edit key has been pressed over an item.
QAbstractItemView.AnyKeyPressed
16
Editing starts when any key is pressed over an item.按下任意键就能修改
QAbstractItemView.AllEditTriggers
31
Editing starts for all above actions.以上条件全包括
设置表格为整行选择
tableWidget-> setSelectionBehavior( QAbstractItemView::SelectRows) ; //整行选中的方式
QAbstractItemView.SelectionBehavior枚举还有如下类型
Constant
Value
Description
QAbstractItemView.SelectItems
0
Selecting single items.选中单个单元格
QAbstractItemView.SelectRows
1
Selecting only rows.选中一行
QAbstractItemView.SelectColumns
2
Selecting only columns.选中一列
3.单个选中和多个选中的设置:
tableWidget-> setSelectionMode( QAbstractItemView::ExtendedSelection) ; //设置为可以选中多个目标
该函数的参数还可以是:
QAbstractItemView.NoSelection 不能选择
QAbstractItemView.SingleSelection 选中单个目标
QAbstractItemView.MultiSelection 选中多个目标
QAbstractItemView.ExtendedSelection QAbstractItemView.ContiguousSelection 的区别不明显,
主要功能是正常情况下是单选,但按下Ctrl或Shift键后,可以多选
表格表头的显示与隐藏
对于水平或垂直方法的表头,可以用以下方式进行 隐藏/显示 的设置:
tableWidget-> verticalHeader( ) -> setVisible( false) ; //隐藏列表头
tableWidget-> horizontalHeader( ) -> setVisible( false) ; //隐藏行表头
注意:需要
对表头文字的字体、颜色进行设置
QTableWidgetItem *columnHeaderItem0 = tableWidget-> horizontalHeaderItem( 0) ; //获得水平方向表头的Item对象
columnHeaderItem0-> setFont( QFont( "Helvetica" )) ; //设置字体
columnHeaderItem0-> setBackgroundColor( QColor( 0,60,10)) ; //设置单元格背景颜色
columnHeaderItem0-> setTextColor( QColor( 200,111,30)) ; //设置文字颜色
注意:需要
在单元格里加入控件:
QTableWidget不仅允许把文字加到单元格,还允许把控件也放到单元格中。比如,把一个下拉框加入单元格,可以这么做:
QComboBox *comBox = new QComboBox( ) ;
comBox-> addItem( "Y" ) ;
comBox-> addItem( "N" ) ;
tableWidget-> setCellWidget( 0,2,comBox) ;
读取QComboBox 信息:
QWidget * widget= ui-> tableWidget-> cellWidget( i,0) ; //获得widget
QComboBox *combox= ( QComboBox*) widget; //强制转化为QComboBox
QString string= combox-> currentText( ) ;
qDebug( ) << string;
二. 对单元格的进行设置
单元格设置字体颜色和背景颜色 及字体字符
QTableWidgetItem *item = new QTableWidgetItem( "Test" ) ;
item-> setBackgroundColor( QColor( 0,60,10)) ;
item-> setTextColor( QColor( 200,111,100)) ;
item-> setFont( QFont( "Helvetica" )) ;
tableWidget-> setItem( 0,3,item) ;
另:如果需要对所有的单元格都使用这种字体,则可以使用 tableWidget-> setFont( QFont( "Helvetica" )) ;
设置单元格内文字的对齐方式
这个比较简单,使用newItem.setTextAlignment( ) 函数即可,该函数的参数为单元格内的对齐方式,和字符输入顺序是自左相右还是自右向左。
水平对齐方式有:
Qt.AlignLeft
Qt.AlignRight
Qt.AlignHCenter
Qt.AlignJustify
垂直对齐方式:
Qt.AlignTop
Qt.AlignBottom
Qt.AlignVCenter
如果两种都要设置,只要用 Qt.AlignHCenter | Qt.AlignVCenter 的方式即可
合并单元格效果的实现:
tableWidget-> setSpan( 0, 0, 3, 1)
设置单元格的大小
首先,可以指定某个行或者列的大小
tableWidget-> setColumnWidth( 3,200) ;
tableWidget-> setRowHeight( 3,60) ;
还可以将行和列的大小设为与内容相匹配
tableWidget-> resizeColumnsToContents( ) ;
tableWidget-> resizeRowsToContents( ) ;
获得单击单元格的内容
通过实现 itemClicked ( QTableWidgetItem *) 信号的槽函数,就可以获得鼠标单击到的单元格指针,
进而获得其中的文字信息
connect( tableWidget,SIGNAL( itemDoubleClicked( QTreeWidgetItem*,int)) ,
this,SLOT( getItem( QTreeWidgetItem*,int)) ) ;
//将itemClicked信号与函数getItem绑定
6.QTableWidget要调整表格行宽主要涉及以下一个函数
resizeColumnsToContents( ) ; 根据内容调整列宽
resizeColumnToContents( int col) ; 根据内容自动调整给定列宽
horizontalHeader( ) -> setResizeMode 把给定列设置为给定模式
主要模式有Stretch和Fixed
7.添加表头内容:
方法一:
QStringList header;
header<< "" << tr( "1" ) << tr( "2" ) << tr( "3" ) << tr( "4)<5");
方法二:
tableWidget->setHorizontalHeaderLabels(QStringList() << tr(" 1")
<2")<3")<4) << tr( "5" )) ;
8 排序:
tableWidget-> sortByColumn( 0, Qt::AscendingOrder) ; //顾名思义,该函数意思是将某列按升序/降序的方式排列
9 设置表格改变大小固定
行:
QHeaderView *headerView = ui.tableWidget-> horizontalHeader( ) ;
headerView-> setSectionResizeMode( QHeaderView::Fixed) ;
列:
QHeaderView *vertical = ui.tableWidget-> verticalHeader( ) ;
vertical-> setSectionResizeMode( QHeaderView::Fixed) ; //列表不能移动
10:代码实现某行高亮
//设定选择行为,按行选择
ui.tableWidget-> setSelectionBehavior( QAbstractItemView::SelectRows) ;
//设置选中行的背景色,必须要显示设置,即代码设置或者在ui文件的控件中设置,用系统默认的是
无法代码选中高亮某行
ui.tableWidget-> setStyleSheet( "selection-background-color:rgb(220,20,60)" ) ;
//设置要选中高亮的行,这里会触发QTableWidget::itemClicked的信号
ui.tableWidget-> selectRow( 1) ; //具体行号
11 设置表格隔行换色
ui.tableWidget-> setAlternatingRowColors( true) ;
ui.tableWidget-> setStyleSheet( "QTableView{background-color: rgb(250, 250, 115);"
"alternate-background-color: rgb(50, 110, 255);}" ) ;
12.表格设置使用细节总结1
int row = rowCount( ) ;
removeRow( row) ; //清除已有的行列
setShowGrid( true) ; //显示表格线
verticalHeader( ) -> setVisible( false) ; //隐藏左边垂直
QHeaderView *headerView = horizontalHeader( ) ;
headerView-> setMovable( false) ; //去除表头的移动
headerView-> resizeSection( 0,284) ; //设置第一列宽
headerView-> resizeSection( 1,127) ; //设置第二列宽
headerView-> setResizeMode( QHeaderView::Fixed) ; //列表不能移动
headerView-> setClickable( false) ; //不响应鼠标单击
setEditTriggers( QTableWidget::NoEditTriggers) ; //不能编辑
setSelectionBehavior( QTableWidget::SelectRows) ; //一次选中一行
setSelectionMode( QAbstractItemView::SingleSelection) ; //只能单选
/*QScrollBar *scrollBar = horizontalScrollBar( ) ;
scrollBar-> hide( ) ; */
setHorizontalScrollBarPolicy( Qt::ScrollBarAlwaysOff) ; //去掉水平滚动条
setVerticalScrollMode( QAbstractItemView::ScrollPerItem) ; //垂直滚动条按项移动
setAutoScroll( false) ; //去掉自动滚动
13.常用补充
//设置表头背景色
tableWidget-> horizontalHeader( ) -> setStyleSheet( "QHeaderView::section{background:skyblue;}" ) ;
//设置选中背景色
tableWidget-> setStyleSheet( "selection-background-color:lightblue;" ) ;
//设置表格隔行换色
tableWidget-> setAlternatingRowColors( true) ;
tableWidget-> setStyleSheet( "QTableView{background-color: rgb(250, 250, 115);
" "alternate-background-color: rgb(50, 110, 255);}" ) ;
//设置行距
tableWidget-> verticalHeader( ) -> setDefaultSectionSize( 10) ;
感谢,学习:https://blog.csdn.net/polokang/article/details/6696982 https://blog.csdn.net/zhangxuechao_/article/details/81943463
你可能感兴趣的:(QTableWidget,QT,QTableWidget)
QT C++ new QTableWidgetItem 不需要删除指针
测控系统集成
c++语言 测控 QT 数据库 qt
在Qt中,使用QTableWidgetItem时,通常不需要手动删除指针,除非你是在使用原始指针而非智能指针(如std::unique_ptr或std::shared_ptr)。这是因为QTableWidgetItem本身是Qt框架的一部分,它负责管理自己的内存。1.使用QTableWidgetItem当你向QTableWidget添加项时,可以直接创建并添加QTableWidgetItem对象,
QTextEdit达到指定行数自动清理+光标移动到末端(QT/C++)
ibuki_fuko
Qt与C++ qt 开发语言
标题2:QTextEdit/QPlainTextEdit/QLineEdit/QTextBrowser达到指定行数自动清理标题3:设置QTextEdit/QPlainTextEdit/QLineEdit/QTextBrowser的光标移动到文本末端标题4:设置QT文本框显示内容过多自动清理且光标移动到文本框末端1、使用场景:有大量数据实时刷新显示在QT的文本框相关组件时,需要清理部分之前的数据,并
Selenium使用指南
程序员杰哥
selenium 测试工具 python 测试用例 职场和发展 程序人生 功能测试
概述selenium是网页应用中最流行的自动化测试工具,可以用来做自动化测试或者浏览器爬虫等。官网地址为:相对于另外一款web自动化测试工具QTP来说有如下优点:免费开源轻量级,不同语言只需要一个体积很小的依赖包支持多种系统,包括Windows,Mac,Linux支持多种浏览器,包括Chrome,FireFox,IE,safari,opera等支持多语言,包括Java,C,python,c#等主流
QT 周期性的杀死一个进程(软件),一分钟后自动退出
Mr.Wang809
QT qt 开发语言
1.原因:某软件开机自启动很烦,搞一个程序干掉这个自启动的软件2.QT代码main.cpp#include"KillXXX.h"#includeintmain(intargc,char*argv[]){QApplicationa(argc,argv);KillXXXk;returna.exec();}KillXXX.h#includeclassKillXXX:publicQObject{Q_OBJ
labelme汉化以及打包为.exe
xxbghh
python 开发语言 后端
刚接触python,记录一下自己的安装过程以及遇到的问题。一,安装labelme下载anaconda一直点击下一步安装,安装完成后在开始菜单找到AnacondaPrompt(anaconda3)并打开,运行下列代码condacreate-nlabelme_py27python=2.7condaactivatelabelme_py27condainstallpyqtpipinstalllabelme
win11 labelme 汉化菜单
不喝可乐_
python 开发语言
替换app.py,再重启#labelme汉化菜单#-*-coding:utf-8-*-importfunctoolsimportosimportos.pathasospimportreimportwebbrowserimportimgvizfromqtpyimportQtCorefromqtpy.QtCoreimportQtfromqtpyimportQtGuifromqtpyimportQtWi
如何使用qt开发一个xml发票浏览器,实现按发票样式显示
zhencon-com
qt xml c++ python 经验分享 学习 金融
使用Qt开发一个按发票样式显示的XML发票浏览器,如下图所示样式:一、需求:1、按税务发票样式显示。2、拖入即可显示。3、正确解析xml文件。二、实现可以按照以下步骤进行:1.创建Qt项目打开QtCreator,创建一个新的QtWidgetsApplication项目。设置项目名称和路径,选择合适的Qt版本。2.导入必要的模块在项目的.pro文件中,确保导入了xml模块,以便使用Qt的XML解析功
iot架构 mqtt netty_一个关于小程序Iot的具体实现(MQTT版)
Alfred Cheng
iot架构 mqtt netty
前言Iot,这个名词应该很多人都听过了吧,即大数据、Ai等兴起后也紧跟着研发大潮流的到来,即物联网。传统简单的说就是智能化、程序化的控制硬件设施,大家最容易想到的应该是智能家居,通过一个App或者遥控进行对家具设置的远程控制。而今天要说的是人与物之间的通信控制,且通过互联网产品来执行人的命令,而机器进行应答。竞品说到小程序控制硬件,大家应该立马想到什么产品呢?某拜、某FO、售货机等等,他们的架构上
Qt继承QDialog,并设置提示内容,根据内容自动调整对话框大小
zanglengyu
Qt上位机开发 服务器 前端 linux qt 上位机
#include"dialog_warn.h"#includedialog_warn::dialog_warn(QWidget*parent):QDialog(parent){setWindowTitle("自适应大小对话框");//创建子布局QVBoxLayout*layout1=newQVBoxLayout();QVBoxLayout*layout2=newQVBoxLayout();//创建
QT+FFmpeg如何使用GPU加速解码?
bug菌¹
全栈Bug调优(实战版) qt ffmpeg 开发语言 c++
本文收录于《全栈Bug调优(实战版)》专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!全文目录:问题描述解决方案1.确保FFmpeg和CUDA的支持2.正确选择硬件解码器设置硬件解码器3.初始化CUDA硬件设备4.硬件解码流程解码帧并处理硬件帧5.检查FF
QT移植,交叉编译至泰山派RK3566开发板,.pro文件解析
大象荒野
嵌入式QT开发 笔记 qt 开发语言
配置文件丢这里,后面有空整理下。说下大概的注意点,安装路径(qtcreator远程部署的路径)、动态库路径和头文件路径、运行时动态库路径和头文件路径($$pwd在编译后会被换成绝对路径,因此需要指定运行时动态库路径)#指定使用的Qt模块QT+=coreguiwidgets#配置选项CONFIG+=c++11#警告和弃用APIDEFINES+=QT_DEPRECATED_WARNINGS#如果需要禁
x86平台基于Qt+opengl优化ffmpeg软解码1080P视频渲染效率
zanglengyu
Qt上位机开发 qt ffmpeg 音视频
一般的在arm嵌入式平台,大多数板子都要硬解码硬件渲染的框架,使用即可。在x86下比较麻烦了。优化的思路一共有以下几个方面,1.软解码变成硬解码2.将YUV转QImage的操作转移到GPU3.QWidget渲染QImage变成opengGL渲染AVFrame这三点优化来说2与3是优化的效率是非常显著的。1的优化效果往往需要将硬解码的数据copy至CPU再使用2-3的优化。这样一来,解码效率提升了,
详细学习PyQt5中的多线程
CClaris
PyQt5 学习 qt python GUI Pyqt5 开发语言 Python UI
Pyqt5相关文章:快速掌握Pyqt5的三种主窗口快速掌握Pyqt5的2种弹簧快速掌握Pyqt5的5种布局快速弄懂Pyqt5的5种项目视图(ItemView)快速弄懂Pyqt5的4种项目部件(ItemWidget)快速掌握Pyqt5的6种按钮快速掌握Pyqt5的10种容器(Containers)快速掌握Pyqt5的20种输入控件(InputWidgets)快速掌握Pyqt5的9种显示控件详细学习P
「QT」布局类 之 QGridLayout 网格布局类
何曾参静谧
「QT」QT5程序设计 qt 开发语言
✨博客主页何曾参静谧的博客(✅关注、点赞、⭐收藏、转发)文章专栏「QT」QT5程序设计全部专栏(专栏会有变化,以最新发布为准)「Win」Windows程序设计「IDE」集成开发环境「UG/NX」BlockUI集合「C/C++」C/C++程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「UG/NX」NX定制开发「Py」Python程序设计「Ma
如何使用PyQt5创建一个简单的主窗口应用程序
星际编程喵
Python探索之旅 qt 开发语言 python pyqt
PyQt5是一个功能强大且易于使用的PythonGUI框架,它可以帮助开发者创建各种类型的图形用户界面应用程序。使用PyQt5,你可以轻松地创建主窗口应用程序,为用户提供直观且交互式的界面。创建一个简单的主窗口应用程序,只需几行代码即可完成。首先,你需要安装PyQt5库,并确保你的Python环境中已经安装了相应的依赖项。一旦完成安装,你就可以开始编写代码了。在创建主窗口应用程序之前,让我们先了解
gpt用pyQT和python 写待办事项程序,回头把我自己写的改造一下
中医是一种语言艺术
python gpt pyqt
首先,需要安装以下库:-PyQt5:用于创建桌面应用程序的GUI界面-sqlite3:用于连接和操作SQLite数据库然后,可以按照以下步骤来实现待办事项程序:1.创建一个SQLite数据库,并创建一个名为“tasks”的表,用于存储待办事项的详细信息,包括任务名称、任务类型、任务截止日期、任务状态等。```pythonimportsqlite3conn=sqlite3.connect('task
QT Data Visualization模块(一)
淼淼763
qt6.3 c++
1、.pro文件添加模块:QT+=datavisualization2、包含头文件:#include3、Q3DBars、Q3DScatter、Q3DSurface继承QWindow类。QAbstract3DGraph是Qt框架中用于实现三维图形的抽象基类,QAbstract3DGraph提供了一组通用的方法和属性。4、每一种三维图形类对应一种三维序列(在图像处理和计算机图形学中,"图形序列"是指一
QAreaLegendMarker Class 详解
七贤岭双花红棍
qt
QAreaLegendMarker类详解QAreaLegendMarker类是QtCharts模块中用于表示面积图系列(QAreaSeries)的图例标记(LegendMarker)的类。图例标记是图例中的一个小图标,用于标识图表中的不同系列。QAreaLegendMarker专门用于面积图系列,它继承自QLegendMarker类。主要功能图例标记显示:QAreaLegendMarker用于在图
百问网imx6ullpro调试记录(linux+qt)
嵌入式修炼师
linux驱动 linux qt
调试记录文章目录调试记录进展1.开发板相关1.1百问网乌班图密码1.2换设备开发环境搭建串口调试网络互通nfs文件系统挂载1.3网络问题1.4系统启动1.5进程操作2.QT2.1tslib1.获取源码2.安装依赖文件3.编译2.2qt移植1.获取qt源码2.配置编译器3.编译2.3拷贝到开发板1.拷贝2.修改开发板配置文件qttslib3.验证是否生效2.4安装QtCreator1.获取安装包2.
qt 图形视图框架详解以及举例
爱学习的大牛123
qt开发 qt 数据库 开发语言
1基础介绍Qt的图形视图框架是一个强大的工具,用于创建和管理大量的2D图形项目。它由三个主要类组成:QGraphicsScene、QGraphicsView和QGraphicsItem。下面我将详细解释这个框架,并提供一些示例代码。1.框架组成a)QGraphicsScene(场景):-用于管理大量的2D图形项目-提供了一个高效的接口来添加、删除和查找项目b)QGraphicsView(视图):-
Qt Creator用法详解
不如温暖过生活
C++界面开发框架Qt最新资讯 Qt qtcreator
Qt自带集成开发环境(IDE),名为QtCreator。它可以在Linux、OSX和Windows上运行,并提供智能代码完成、语法高亮、集成帮助系统、调试器和剖析器集成,还集成了所有主要的版本控制系统(如git、Bazaar)。除了QtCreator外,Windows上的开发人员还可以使用Qt的VisualStudio插件。也可以使用其他的IDE(如KDE上的KDevelop)。但当然绝不是必须使
QT 3D渲染技术详解
QT性能优化QT原理源码QT界面美化
qt 3d qt6.3 qt5 c++ QT教程
QT3D渲染技术详解使用AI技术辅助生成QT界面美化视频课程QT性能优化视频课程QT原理与源码分析视频课程QTQMLC++扩展开发视频课程免费QT视频课程您可以看免费1000+个QT技术视频免费QT视频课程QT统计图和QT数据可视化视频免费看免费QT视频课程QT性能优化视频免费看免费QT视频课程QT界面美化视频免费看1QT_3D渲染技术概述1.13D渲染技术简介1.1.13D渲染技术简介3D渲染技
Qt QOpenGLFunctions详解
码农客栈_V13427279549
Qt qt
1.概述QOpenGLFunctions是Qt提供的一个工具类,用于封装OpenGL的函数调用。它使得在Qt应用程序中使用OpenGL更加方便和安全,同时提供了跨平台的兼容性。通过继承QOpenGLFunctions,开发者可以轻松地访问OpenGL的核心功能,而无需直接调用原生的OpenGLAPI。QOpenGLFunctions提供了大量封装的OpenGL函数,这些函数与OpenGL的原生函数
cmake Qt Mingw windows构建
极客-杀生丸
嵌入式 qt windows 开发语言
今天教大家怎么在windows构建qt应用使用cmd命令行,而不是一键通过QtCreator一键构建。首先我们用qtcreator创建一个模板程序(PS:记得在安装qt时要悬着mingw套件,如果安装太慢可以换源)输入以下的命令:mkdirbuildcdbuildcmake-G"MinGWMakefiles"-DCMAKE_PREFIX_PATH=D:/Qt2/6.5.3/mingw_64..mi
银河麒麟V10SP1下qt5-12-12编译环境配置
洛阳鱼紫怡
qt
下面的脚本在兆芯版kylin上试过,如果是本地编译,arm版应该也没有问题a.如果执行脚本安装有问题,读者可以拷贝命令多次安装b.建议在虚拟机环境下进行#!/bin/bashsudoaptupdatesudoapt-getinstallg++gccmakecmakegperfbisonflexlibdrm-devlibxcomposite-devsudoapt-getinstalllibxcurs
qt实现文字跑马灯效果
凌武贰玖
# QPainter Qt qt 开发语言
实现跑马灯的方式多种多少样,可以通过定时器,或者animation等来实现。本文通过定时器,将第一个文字,移动到最后一个这种方式来实现,还有其他方式哈。直接上源码h文件#ifndefTEXTTICKER_H#defineTEXTTICKER_H#include#include/*跑马灯标签文字*/classTextTicker:publicQLabel{Q_OBJECTpublic:TextTic
模型/视图编程
潦潦
Qt qt 开发语言
1.MVC包含模型(Model表示数据)、视图(View用户界面)、控制器(Controller界面对用户输入的反应方式)三部分,Qt中还引入了委托(Delegate,又称代理)来对用户输入进行灵活处理,使用它可以定制数据的渲染和编辑方式。QAbstractItemModel是模型的抽象基类TheQAbstractItemModelclassprovidestheabstractinterface
Qt - MVC模型/视图编程
骆驼胡杨
Qt qt
MVC模型/视图编程Qt中的模型/视图架构用来实现大量的数据存储、处理及显示。MVC(Model-View-Controller)包括了3个组件:模型(Model)是应用对象,用来表示数据;视图(View)是模型的用户界面,用来显示数据;控制(Controller)定义了用户界面对用户输入的反应方式。委托(Delegate)用于定制数据的渲染和编辑方式。1.模型所有的模型都基于QAbstractI
QtCreator 模块/视图编程( 一) 模型类,自定义模型QStringListModel,QStandardItemModel,QFileSystemModel,QSqlQueryModel,
psujtfc
Qt QtCreator QtCreator 模块视图 模型类 自定义模型
1模型/视图架构1.1模型所有的模型都是基于QAbstractItemModel类,这个类定义了一个接口,可以供视图和委托来访问数据。Qt提供的现成模型:QStringListModel:用来存储一个简单的QString项目列表QStandardItemModel:管理复杂的树型结构数据项,每一个数据项可以包含任意数据QFileSystemModel:提供了本地文件系统中文件和目录的信息QSqlQ
Qt模型/视图结构
十年编程老舅
QT开发 qt qt开发 Qt模型 qt教程 C++
MVC设计模式是起源于Smalltalk的一种与用户界面相关的设计模式。通过使用此模式,可以有效地分离数据和用户界面。MVC设计模式包括三个元素:表示数据的模型(Model)、表示用户界面的视图(View)和定义了用户在界面上操作的控制器(Controller)。与MVC设计模式类似,Qt引入了模型/视图结构用于完成数据与界面的分离,即InterView框架。但不同的是,Qt的InterView框
Java序列化进阶篇
g21121
java序列化
1.transient
类一旦实现了Serializable 接口即被声明为可序列化,然而某些情况下并不是所有的属性都需要序列化,想要人为的去阻止这些属性被序列化,就需要用到transient 关键字。
escape()、encodeURI()、encodeURIComponent()区别详解
aigo
JavaScript Web
原文:http://blog.sina.com.cn/s/blog_4586764e0101khi0.html
JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:,decodeURI,decodeURIComponent 。
下面简单介绍一下它们的区别
1 escape()函
ArcgisEngine实现对地图的放大、缩小和平移
Cb123456
添加矢量数据 对地图的放大、缩小和平移 Engine
ArcgisEngine实现对地图的放大、缩小和平移:
个人觉得是平移,不过网上的都是漫游,通俗的说就是把一个地图对象从一边拉到另一边而已。就看人说话吧.
具体实现:
一、引入命名空间
using ESRI.ArcGIS.Geometry;
using ESRI.ArcGIS.Controls;
二、代码实现.
Java集合框架概述
天子之骄
Java集合框架概述
集合框架
集合框架可以理解为一个容器,该容器主要指映射(map)、集合(set)、数组(array)和列表(list)等抽象数据结构。
从本质上来说,Java集合框架的主要组成是用来操作对象的接口。不同接口描述不同的数据类型。
简单介绍:
Collection接口是最基本的接口,它定义了List和Set,List又定义了LinkLi
旗正4.0页面跳转传值问题
何必如此
java jsp
跳转和成功提示
a) 成功字段非空forward
成功字段非空forward,不会弹出成功字段,为jsp转发,页面能超链接传值,传输变量时需要拼接。接拼接方式list.jsp?test="+strweightUnit+"或list.jsp?test="+weightUnit+&qu
全网唯一:移动互联网服务器端开发课程
cocos2d-x小菜
web开发 移动开发 移动端开发 移动互联 程序员
移动互联网时代来了! App市场爆发式增长为Web开发程序员带来新一轮机遇,近两年新增创业者,几乎全部选择了移动互联网项目!传统互联网企业中超过98%的门户网站已经或者正在从单一的网站入口转向PC、手机、Pad、智能电视等多端全平台兼容体系。据统计,AppStore中超过85%的App项目都选择了PHP作为后端程
Log4J通用配置|注意问题 笔记
7454103
DAO apache tomcat log4j Web
关于日志的等级 那些去 百度就知道了!
这几天 要搭个新框架 配置了 日志 记下来 !做个备忘!
#这里定义能显示到的最低级别,若定义到INFO级别,则看不到DEBUG级别的信息了~!
log4j.rootLogger=INFO,allLog
# DAO层 log记录到dao.log 控制台 和 总日志文件
log4j.logger.DAO=INFO,dao,C
SQLServer TCP/IP 连接失败问题 ---SQL Server Configuration Manager
darkranger
sql c windows SQL Server XP
当你安装完之后,连接数据库的时候可能会发现你的TCP/IP 没有启动..
发现需要启动客户端协议 : TCP/IP
需要打开 SQL Server Configuration Manager...
却发现无法打开 SQL Server Configuration Manager..??
解决方法: C:\WINDOWS\system32目录搜索framedyn.
[置顶] 做有中国特色的程序员
aijuans
程序员
从出版业说起 网络作品排到靠前的,都不会太难看,一般人不爱看某部作品也是因为不喜欢这个类型,而此人也不会全不喜欢这些网络作品。究其原因,是因为网络作品都是让人先白看的,看的好了才出了头。而纸质作品就不一定了,排行榜靠前的,有好作品,也有垃圾。 许多大牛都是写了博客,后来出了书。这些书也都不次,可能有人让为不好,是因为技术书不像小说,小说在读故事,技术书是在学知识或温习知识,有些技术书读得可
document.domain 跨域问题
avords
document
document.domain用来得到当前网页的域名。比如在地址栏里输入:javascript:alert(document.domain); //www.315ta.com我们也可以给document.domain属性赋值,不过是有限制的,你只能赋成当前的域名或者基础域名。比如:javascript:alert(document.domain = "315ta.com");
关于管理软件的一些思考
houxinyou
管理
工作好多看年了,一直在做管理软件,不知道是我最开始做的时候产生了一些惯性的思维,还是现在接触的管理软件水平有所下降.换过好多年公司,越来越感觉现在的管理软件做的越来越乱.
在我看来,管理软件不论是以前的结构化编程,还是现在的面向对象编程,不管是CS模式,还是BS模式.模块的划分是很重要的.当然,模块的划分有很多种方式.我只是以我自己的划分方式来说一下.
做为管理软件,就像现在讲究MVC这
NoSQL数据库之Redis数据库管理(String类型和hash类型)
bijian1013
redis 数据库 NoSQL
一.Redis的数据类型
1.String类型及操作
String是最简单的类型,一个key对应一个value,string类型是二进制安全的。Redis的string可以包含任何数据,比如jpg图片或者序列化的对象。
Set方法:设置key对应的值为string类型的value
Tomcat 一些技巧
征客丶
java tomcat dos
以下操作都是在windows 环境下
一、Tomcat 启动时配置 JAVA_HOME
在 tomcat 安装目录,bin 文件夹下的 catalina.bat 或 setclasspath.bat 中添加
set JAVA_HOME=JAVA 安装目录
set JRE_HOME=JAVA 安装目录/jre
即可;
二、查看Tomcat 版本
在 tomcat 安装目
【Spark七十二】Spark的日志配置
bit1129
spark
在测试Spark Streaming时,大量的日志显示到控制台,影响了Spark Streaming程序代码的输出结果的查看(代码中通过println将输出打印到控制台上),可以通过修改Spark的日志配置的方式,不让Spark Streaming把它的日志显示在console
在Spark的conf目录下,把log4j.properties.template修改为log4j.p
Haskell版冒泡排序
bookjovi
冒泡排序 haskell
面试的时候问的比较多的算法题要么是binary search,要么是冒泡排序,真的不想用写C写冒泡排序了,贴上个Haskell版的,思维简单,代码简单,下次谁要是再要我用C写冒泡排序,直接上个haskell版的,让他自己去理解吧。
sort [] = []
sort [x] = [x]
sort (x:x1:xs)
| x>x1 = x1:so
java 路径 配置文件读取
bro_feng
java
这几天做一个项目,关于路径做如下笔记,有需要供参考。
取工程内的文件,一般都要用相对路径,这个自然不用多说。
在src统计目录建配置文件目录res,在res中放入配置文件。
读取文件使用方式:
1. MyTest.class.getResourceAsStream("/res/xx.properties")
2. properties.load(MyTest.
读《研磨设计模式》-代码笔记-简单工厂模式
bylijinnan
java 设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
package design.pattern;
/*
* 个人理解:简单工厂模式就是IOC;
* 客户端要用到某一对象,本来是由客户创建的,现在改成由工厂创建,客户直接取就好了
*/
interface IProduct {
SVN与JIRA的关联
chenyu19891124
SVN
SVN与JIRA的关联一直都没能装成功,今天凝聚心思花了一天时间整合好了。下面是自己整理的步骤:
一、搭建好SVN环境,尤其是要把SVN的服务注册成系统服务
二、装好JIRA,自己用是jira-4.3.4破解版
三、下载SVN与JIRA的插件并解压,然后拷贝插件包下lib包里的三个jar,放到Atlassian\JIRA 4.3.4\atlassian-jira\WEB-INF\lib下,再
JWFDv0.96 最新设计思路
comsci
数据结构 算法 工作 企业应用 公告
随着工作流技术的发展,工作流产品的应用范围也不断的在扩展,开始进入了像金融行业(我已经看到国有四大商业银行的工作流产品招标公告了),实时生产控制和其它比较重要的工程领域,而
vi 保存复制内容格式粘贴
daizj
vi 粘贴 复制 保存原格式 不变形
vi是linux中非常好用的文本编辑工具,功能强大无比,但对于复制带有缩进格式的内容时,粘贴的时候内容错位很严重,不会按照复制时的格式排版,vi能不能在粘贴时,按复制进的格式进行粘贴呢? 答案是肯定的,vi有一个很强大的命令可以实现此功能 。
在命令模式输入:set paste,则进入paste模式,这样再进行粘贴时
shell脚本运行时报错误:/bin/bash^M: bad interpreter 的解决办法
dongwei_6688
shell脚本
出现原因:windows上写的脚本,直接拷贝到linux系统上运行由于格式不兼容导致
解决办法:
1. 比如文件名为myshell.sh,vim myshell.sh
2. 执行vim中的命令 : set ff?查看文件格式,如果显示fileformat=dos,证明文件格式有问题
3. 执行vim中的命令 :set fileformat=unix 将文件格式改过来就可以了,然后:w
高一上学期难记忆单词
dcj3sjt126com
word english
honest 诚实的;正直的
argue 争论
classical 古典的
hammer 锤子
share 分享;共有
sorrow 悲哀;悲痛
adventure 冒险
error 错误;差错
closet 壁橱;储藏室
pronounce 发音;宣告
repeat 重做;重复
majority 大多数;大半
native 本国的,本地的,本国
hibernate查询返回DTO对象,DTO封装了多个pojo对象的属性
frankco
POJO hibernate查询 DTO
DTO-数据传输对象;pojo-最纯粹的java对象与数据库中的表一一对应。
简单讲:DTO起到业务数据的传递作用,pojo则与持久层数据库打交道。
有时候我们需要查询返回DTO对象,因为DTO
Partition List
hcx2013
partition
Given a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal to x.
You should preserve the original relative order of th
Spring MVC测试框架详解——客户端测试
jinnianshilongnian
上一篇《Spring MVC测试框架详解——服务端测试》已经介绍了服务端测试,接下来再看看如果测试Rest客户端,对于客户端测试以前经常使用的方法是启动一个内嵌的jetty/tomcat容器,然后发送真实的请求到相应的控制器;这种方式的缺点就是速度慢;自Spring 3.2开始提供了对RestTemplate的模拟服务器测试方式,也就是说使用RestTemplate测试时无须启动服务器,而是模拟一
关于推荐个人观点
liyonghui160com
推荐系统 关于推荐个人观点
回想起来,我也做推荐了3年多了,最近公司做了调整招聘了很多算法工程师,以为需要多么高大上的算法才能搭建起来的,从实践中走过来,我只想说【不是这样的】
第一次接触推荐系统是在四年前入职的时候,那时候,机器学习和大数据都是没有的概念,什么大数据处理开源软件根本不存在,我们用多台计算机web程序记录用户行为,用.net的w
不间断旋转的动画
pangyulei
动画
CABasicAnimation* rotationAnimation;
rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
rotationAnimation.toValue = [NSNumber numberWithFloat: M
自定义annotation
sha1064616837
java enum annotation reflect
对象有的属性在页面上可编辑,有的属性在页面只可读,以前都是我们在页面上写死的,时间一久有时候会混乱,此处通过自定义annotation在类属性中定义。越来越发现Java的Annotation真心很强大,可以帮我们省去很多代码,让代码看上去简洁。
下面这个例子 主要用到了
1.自定义annotation:@interface,以及几个配合着自定义注解使用的几个注解
2.简单的反射
3.枚举
Spring 源码
up2pu
spring
1.Spring源代码
https://github.com/SpringSource/spring-framework/branches/3.2.x
注:兼容svn检出
2.运行脚本
import-into-eclipse.bat
注:需要设置JAVA_HOME为jdk 1.7
build.gradle
compileJava {
sourceCompatibilit
利用word分词来计算文本相似度
yangshangchuan
word word分词 文本相似度 余弦相似度 简单共有词
word分词提供了多种文本相似度计算方式:
方式一:余弦相似度,通过计算两个向量的夹角余弦值来评估他们的相似度
实现类:org.apdplat.word.analysis.CosineTextSimilarity
用法如下:
String text1 = "我爱购物";
String text2 = "我爱读书";
String text3 =