admin 管理员组文章数量: 887021
2023年12月24日发(作者:dhtml什么意思)
N z在使用Qt不多的日子里,已经两次用到了QTableWidget这个控件,也慢慢的习惯和喜欢上了它。再使用QTableWidget的时候,已不像刚开始使用时的迷茫。嗯嗯。现在就来总结总结我与QTableWidget相识的历程......(*^__^*) 嘻嘻……
使用时也查过不少资料,在此感谢前辈们的用心总结与分享!
▍ ★∴
....▍▍....█▍ ☆ ★∵ ..../
◥█▅▅██▅▅██▅▅▅▅▅███◤
.◥███████████████◤
~~~~◥█████████████◤~~~~
Widget不能在mainwindow中随主窗口的大小变化?
解决:在表格外部添加布局。
代码:tableWidget = new QTableWidget;
tableWidget ->setObjectName(QString::fromUtf8("tableWidget"));
QVBoxLayout *verticalLayout;
verticalLayout->addWidget(tableWidget );
2.将表格变为禁止编辑:
tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
(参数含义:Triggers--不能对表格内容进行修改
tChanged--任何时候都能对单元格修改
Clicked--双击单元格
edClicked--单击已选中的内容
yPressed--
Pressed--按下任意键就能修改
tTriggers--以上条件全包括)
3.设置表格为整行选择
tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows); //整行选中的方式
(参数含义:Items--选中单个单元格
Rows--选中一行
Columns--选中一列)
4.单个选中和多个选中的设置:
tableWidget->setSelectionMode(QAbstractItemView::ExtendedSelection); //设置为可以选中多个目标
(参数含义:ction--不能选择
Selection--选中单个目标
election--选中多个目标
edSelection/uousSelection 的区别不明显,主要功能是正常情况下是单选,但按下Ctrl或Shift键后,可以多选)
5.表格表头的显示与隐藏
对于水平或垂直方法的表头,可以用以下方式进行 隐藏/显示 的设置:
tableWidget->verticalHeader()->setVisible(false); //隐藏列表头
tableWidget->horizontalHeader()->setVisible(false); //隐藏行表头
注意:需要 #include
6.对表头文字的字体、颜色进行设置
QTableWidgetItem *columnHeaderItem0 = tableWidget->horizontalHeaderItem(0); //获得水平方向表头的Item对象
columnHeaderItem0->setFont(QFont("Helvetica")); //设置字体
columnHeaderItem0->setBackgroundColor(QColor(0,60,10)); //设置单元格背景颜色
columnHeaderItem0->setTextColor(QColor(200,111,30)); //设置文字颜色
注意:需要 #include
7.在单元格里加入控件:
QComboBox *comBox = new QComboBox();
comBox->addItem("Y");
comBox->addItem("N");
tableWidget->setCellWidget(0,2,comBox);
8.单元格中添加图片:
tableWidget->setItem(row, 0, new QTableWidgetItem(QIcon(":/new/images/"),tr("")));
9设置单元格字体颜色、背景颜色和字体字符:
QTableWidgetItem *item = new QTableWidgetItem("Apple");
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"));
10.设置单元格内文字的对齐方式
水平对齐方式有:
Constant Value Description
eft 0x0001 Aligns with the left edge.
ight 0x0002 Aligns with the right edge.
Center 0x0004 Centers horizontally in the available space.
ustify 0x0008 Justifies the text in the available space.
垂直对齐方式:
Constant Value Description
op 0x0020 Aligns with the top.
ottom 0x0040 Aligns with the bottom.
Center 0x0080 Centers vertically in the available space.
如果两种都要设置,只要用 Center | Center 的方式即可
11.合并单元格:
tableWidget->setSpan(0, 0, 3, 1) # 其参数为: 要改变单元格的1行数、2列数,要合并的3行数、4列数
12.设置单元格的大小
首先,可以指定某个行或者列的大小
tableWidget->setColumnWidth(3,200);
tableWidget->setRowHeight(3,60);
还可以将行和列的大小设为与内容相匹配
tableWidget->resizeColumnsToContents();
tableWidget->resizeRowsToContents();
13.获得单击单元格的内容
通过实现 itemClicked (QTableWidgetItem *) 信号的槽函数,就可以获得鼠标单击到的单元格指针,进而获得其中的文字信息
connect(tableWidget,SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)),this,SLOT(getItem(QTreeWidgetItem*,int)));
//将itemClicked信号与函数getItem绑定
Widget要调整表格行宽主要涉及以下函数
tableWidget->horizontalHeader()->setResizeMode(QHeaderView::Stretch);//使列完全填充并平分
tableWidget->verticalHeader()->setResizeMode(QHeaderView::Stretch);//行自适应宽度
tableWidget->resizeColumnsToContents(); //根据内容调整列宽
tableWidget->resizeColumnToContents(int col);//根据内容自动调整给定列宽
tableWidget->horizontalHeader()->setResizeMode//把给定列设置为给定模式
主要模式有Stretch和Fixed
15.添加表头内容:
方法一:
QStringList header;
header<<""<
方法二:
tableWidget->setHorizontalHeaderLabels(QStringList() << tr("1")<
16.清除:
tableWidget->clear();//清除所有可见数据(包括表头),行还在
tableWidget->clearContents();//只清除表中数据,不清除表头内容
tableWidget->setRowCount(0);//连行也清除掉
15.一些零碎的知识点代码:
int row = tableWidget->rowCount();//获取表格中当前总行数
tableWidget->setRowCount(row+1);//添加一行
tableWidget->removeRow(row);//清除已有的行列
Int row1 = tableWidget->currentItem()->row();//当前选中行
bool focus = tableWidget->isItemSelected(tableWidget->currentItem());//判断是否选中一行
QString proName = tableWidget->item(row, col)->text();//获取某一格内容
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);//去掉自动滚动
使行间隔变颜色
QPalette pal;
or(QPalette::Base, QColor(255, 0, 0));
or(QPalette::AlternateBase, QColor(0, 255, 0));
ui->tableWidget->setPalette(pal);
u
i->tableWidget->setAlternatingRowColors(true);
参加OSC应用开发大赛,拿Nexus 4手机 活动详情
基本外观设置
FriendTable->setFrameShape(QFrame::NoFrame); //设置边框
FriendTable->setHorizontalHeaderLabels(HeadList); 设置表头
FriendTable->setSelectionMode(QAbstractItemView::SingleSelection); 设置选择的模式为单选择
FriendTable->setSelectionBehavior(QAbstractItemView::SelectRows); 设置选择行为时每次选择一行
FriendTable->setShowGrid(false); 设置不显示格子线
FriendTable->setFont(font); 设置字体
设置表单背景或透明
QPalette pal = musicTable->palette();
sh(this->backgroundRole(),QBrush(QPixmap("images/")) );
musicTable->setPalette( pal );
设置它的背景图片,也可以将QBrush初始化为QColor来设置背景颜色
QPalette pll = musicTable->palette();
sh(QPalette::Base,QBrush(QColor(255,255,255,0)));
musicTable->setPalette(pll); //和QTextEdit一样,都可以使用样式表QPalette来修改它的背景颜色和背景图片,这里我们把刷子设置为全透明的,就可以是透明的
在QTableWidget列表中添加图片的方法
QTableWidgetItem *cubesHeaderItem = new
QTableWidgetItem(tr("Cubes"));
cubesHeaderItem->setIcon(QIcon(QPixmap("")));
cubesHeaderItem->setTextAlignment(Qt::AlignVCenter);
musicTable->setItem(1,1,cubesHeaderItem); //在第一行第一列中显示图片
*******************表头的属性修改****************
musicTable->horizontalHeader()->resizeSection(0,150); //修改表头第一列的宽度为150
musicTable->horizontalHeader()->setFixedHeight(25); //修改表头合适的高度
musicTable->horizontalHeader()->setStyleSheet("QHeaderView::section {background-color:lightblue;color: black;padding-left:
4px;border: 1px solid #6c6c6c;}"); //设置表头字体,颜色,模式
FriendTable->verticalHeader()->setStyleSheet("QHeaderView::section { background-color:skyblue;color: black;padding-left:
4px;border: 1px solid #6c6c6c}"); //设置纵列的边框项的字体颜色模式等
本来想找找QT里有没有现成的API的,结果没有找到,只能自己写了。
实现也好实现,QTableWidgetItem里面有修改背景色的API,直接调用,然后用循环控制隔行换色即可。
实现代码:
void testtt::changeColor(QTableWidget *tablewidget){
for (int i = 0;i < tablewidget->rowCount();i++)
{
if (i % 2 == 0)
{
for (int j = 0;j < tablewidget->columnCount();j++)
{
QTableWidgetItem *item = tablewidget->item(i,j);
if (item)
{
const QColor color = QColor(252,222,156);
item->setBackgroundColor(color);
}
}
}
}
使用
向表中插入一项
QTableWidgetItem *num=new
QTableWidgetItem(QTableWidgetItem::Type);
num->setCheckState(Qt::Unchecked); //加入复选框
num->setIcon(QIcon("images/")); //加入ICon
num->setText((i).name);
num->setFont(font);
num->setTextColor(color);
num->setFlags(num->flags() ^ Qt::ItemIsEditable);
int currentRow=FriendTable->rowCount(); //插入到最后
FriendTable->insertRow(currentRow);
FriendTable->setItem(currentRow,0,num); //插入该Item
FriendTable->selectRow(0); 选择第一行
删除某一行 列
FriendTable->removeRow(row);
FriendTable->removeColumn (column );
信号
void cellActivated ( int row, int column )
void cellChanged ( int row, int column )
void cellClicked ( int row, int column )
void cellDoubleClicked ( int row, int column )
void cellEntered ( int row, int column )
void cellPressed ( int row, int column )
void currentCellChanged ( int currentRow, int currentColumn, int
previousRow, int previousColumn )
void currentItemChanged ( QTableWidgetItem * current,
QTableWidgetItem * previous ) 改变Item了
void itemActivated ( QTableWidgetItem * item )
void itemChanged ( QTableWidgetItem * item )
void itemClicked ( QTableWidgetItem * item )
void itemDoubleClicked ( QTableWidgetItem * item )
void itemEntered ( QTableWidgetItem * item )
void itemPressed ( QTableWidgetItem * item )
void itemSelectionChanged ()
QT学习笔记-Widget根据表格自动调整列宽度
分类: 高品质来自于对自己的无情挑剔 2012-07-30 14:15 756人阅读 评论(0) 收藏 举报
QT学习笔记-Widget根据表格自动调整列宽度
ui->tableWidget->horizontalHeader()->setResizeMode(QHeaderView::Stretch);//使列平均分配
QTableWidget要调整表格行宽主要涉及以下一个函数
ColumnsToContents(); 根据内容调整列宽
ColumnToContents(int col); 根据内容自动调整给定列宽
ntalHeader()->setResizeMode 把给定列设置为给定模式
主要模式有Stretch和Fixed
posted @ 2011-11-29 22:21 ccsdu2009 阅读(486) | 评论 (0) | 编辑 收藏
QT学习笔记-38.使用QSetting
QSetting类是QT中专门用于读写程序数据的对象
一个简单的使用例子如下:
QSettings setting("",QSettings::IniFormat);
roup("config");
ue("page",QVariant(3));
ue("site",QVariant("/gaimor/"));
ue("maker",QVariant("Gaimor"));
up();
这个例子是把数据写到配置文件中去
当然也可以使用分组的方式写入,具体如下:
ue("config/page",QVariant(3));
ue("config/site",QVariant("/gaimor/"));
ue("config/maker",QVariant("Gaimor"));
它的读写值得函数原型如下:
void setValue(const QString &key, const QVariant &value);
QVariant value(const QString &key, const QVariant &defaultValue = QVariant()) const;
QTableWidget的其中某些列怎么设置为只读模式使其不能被修改
2012-03-05 17:18 706人阅读 评论(0) 收藏 举报
for(int i = 0; i { item(i, colunm)->setFlags(Qt::NoItemFlags); } 嗯嗯!暂时想到和用到的只有这么多了,再用再补。。(参考了某些前辈的,。不要介意哦,(*^__^*) )
版权声明:本文标题:QtableWidget的用法总结 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1703399194h449561.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
更多相关文章
硬盘格式化后能恢复数据吗?试试这两个数据恢复秘典
硬盘是电脑中内置的数据存储配件,每个硬盘都存放着很多重要的数据,要是你的硬盘不小心格式化的话,可想而知,该硬盘的所有数据都会被清空,
格式化以后数据还在吗 格式化后数据怎么恢复
格式化是一种保护数据存储设备、清空部分不使用文件的操作方法,它能够对数据存储设备中的文件进行初始化。 但是如果格式化时不小心清空了重要的数据,可能会造成数据丢失的问题。今天,
电脑硬盘格式化后能恢复数据吗 电脑硬盘读取不了怎么办
电脑数据一般储存在硬盘中,硬盘中保存着大量的学习、工作资料。在硬盘的使用过程中,可能出现失误操作将数据格式化的情况。那么,电脑硬盘格式化后能恢复数据吗,
华硕电脑格式化后电脑会怎样?数据怎么恢复
在数字化时代,电脑已经成为我们日常生活和工作中不可或缺的设备。然而,在使用电脑的过程中,有时我们会遇到需要格式化硬盘的情况。对于华硕电脑用户而言,了解格
u盘误操作格式化后如何恢复数据:全面指南
在数字化时代,U盘作为便携的数据存储设备,广泛应用于我们的日常生活和工作中。然而,由于误操作或系统故障等原因,U盘有时会被意外格式化࿰
如何还原恢复格式化后的数据文件?
数据恢复,顾名思义,就是当存储数据的存储介质或者数据本身发生信息安全灾难的时候,将数据还原恢复的一个过程。 当计算机内的文件被有意无意的删除、或遭到病毒破坏、分区被格式化后
U盘不小心格式化恢复数据方法
U盘不小心格式化了怎么办,或者不小心清空了电脑回收站,当你使用U盘或者电脑的过程中不小心格式化了,误删除了数据,是可以恢复找回电脑U盘里面的文件数据的&
海鸥相机存储卡格式化如何恢复数据
在摄影的世界里,每一张照片都承载着独特的记忆与故事。然而,当我们不慎将海鸥相机的存储卡格式化后,那些珍贵的瞬间似乎瞬间消逝,让人心急如焚。但
电脑怎么格式化清除所有数据
在出售、捐赠或维修电脑之前或需要处理敏感数据时,格式化硬盘并彻底清除所有数据还是很有必要的。本篇文章将详细介绍如何安全、彻底地格式化你的电脑。 一、准备工作 在开始格式化之前,有一些重要的准备工
android数据格式化,手机格式化了?教你找回安卓手机误删数据
手机格式化了?教你找回安卓手机误删数据 一般我们在电脑删除资料之后,回收站还没有清空的话,我们直接右键恢复就可以把数据找回来了。如果我们在手机上删除了照片࿰
U盘插上就让格式化是坏了吗?数据怎么恢复
U盘插上就让格式化是坏了吗?当您遇到U盘插上后提示需要格式化的情况时,不要慌张。这种情况并不一定意味着U盘已经坏了。下面我们一起来了解下如何恢复里面的数据,并解决U盘提示格式
被格式化的数据还可以恢复吗?
如果您正在进行格式化,突然意识到应该立即终止格式化操作,那么您可以点击“取消”,或者在磁盘管理器中右键单击正在格式化的分区,选择“取消格式化”。虽然这样
word填表,表格上方横线不显示
在word表格里填内容,但上方横线是空白原因:表格的边框格式设置不正确,表格轮廓线没有画出来,改成【边框】→【所有框线】即可
word vba遍历每一页的第一个表格对象_WORD|操作题第10套
Word | 操 作 题 第 10 套 题 目 某出版社的编辑小刘手中有一篇有关财务软件应用的书稿“Word素材.docx”,请按下列要求完成书稿编排工作。 1.在考生文件夹下,将“Word素材.docx”文件另存为“Word
大数据总结
Hadoop 学习 1.hvie 不是一个完整的数据库,其中最大的限制是hive不支持记录级别的更新,插入,删除。但是用户可以通过查询生成新表或者将查询结果导入到文件中 PYTHON学习 可以把模块想像成导入到python以增强其功能的
python拿到的数据怎么放到页面里_学会Python3模拟登录并爬取表格数据!excel高手也自叹不如!...
主要内容有: 通过requests库模拟表单提交通过pandas库提取网页表格朋友发给我一个网址,哭哭啼啼地求我:“去!把这个网页上所有年所有县所有作物的数据全爬下来,存到Access里!” 我看他可怜,勉为其难地挥挥手说:“好嘞,马上就开
Python新闻网站项目-2.Scrapy爬虫的配置和数据抓取
在构建完整的新闻网站系统中,通过高效的自动化数据抓取技术和全面的内容管理系统架构,能使网站具备实时更新和管理的功能,成为多功能新闻信息平台。 本项目综合应用了Scrapy和Gerapy技术,构建分布式爬虫系统,结合Django框架实现前后
Angular2实现表格分页与搜索栏的实战教程
本文还有配套的精品资源,点击获取 简介:在Angular2项目中整合表格分页和搜索栏可以显著提升用户体验,尤其在数据量大的情况下。本文通过利用Bootstrap框架及An
数据库误操作,如何恢复数据(SQL事务,或数据库还原)
数据库误操作 一般指,不小心删除插入了某个数据,或是当有多个操作同时执行时,因为网络原因或者机器原因,导致整体操作只执行了一半,
大数据开发(黑马)
启动步骤 :::color2 su - hadoop ::: :::color2 #一键启动hdfs集群 start-dfs.sh ::: 一键关闭hdfs集群 stop-dfs.sh :::color2 启动:
推荐文章
热门文章
-
windows系统激活有什么区别
1月前 -
day6 列表和元组
29天前 -
纯css画饼状图
29天前 -
华为云bt及wp
29天前 -
Python 通过adb传输文件到手机
10天前
最新文章
-
Raid技术
8月前 -
LSI_阵列卡操作手册
8月前 -
Windows7 系统安全设置权限技巧
1小时前 -
Win7系统下搭建NFS服务器
2小时前
发表评论