求大神帮忙写一个关于QTpyqt5 tablewidgett的上位机

3150人阅读
QWidget 类代表一般的窗口,其他窗口类都是从 QWidget 类继承出来的。而 QWidget 类则同时继承了 QObject 类 和 QPaintDevice 类,也就是说,窗口类都是 Qt 对象类。这里的 QPaintDevice 类则是所有可绘制的对象的基类。
& & & &常用窗口类的继承关系如图所示:
QTableWidget是QT对话框设计中常用的显示数据表格的控件。
学习QTableWidget就要首先看看QTableView控件(控件也是有”家世“的!就像研究人一样一样的),因为QTableWidget继承于类QTableView。
两者主要区别是QTableView可以使用自定义的数据模型来显示内容(也就意味着使用时先要通过setModel来绑定数据源),而QTableWidget则只能使用标准的数据模型。
QTableWidget单元格数据是QTableWidgetItem对象来实现的(即就是不需要数据源,单元格内的信息需要逐个填充即可)。
这主要由于QTableView类中有setModel成员函数,而到了QTableWidget类中,该成员函数变成了私有。
使用QTableWidget就离不开QTableWidgetItem。QTableWidgetItem用来表示表格中的其中一个单元格,整个表格都需要用逐个单元格对象QTableWidgetItem构建起来。
(1)禁止编辑表格
在默认情况下,表格里的字符是可以更改的。
比如双击一个单元格,就可以修改原来的内容,如果想禁止用户的这种操作,让这个表格对用户只读,可以这样:
tablewidget-&setEditTriggers(QAbstractItemView::NoEditTriggers);
(参数含义:QAbstractItemView.NoEditTriggers--不能对表格内容进行修改
QAbstractItemView.CurrentChanged--任何时候都能对单元格修改
QAbstractItemView.DoubleClicked--双击单元格
QAbstractItemView.SelectedClicked--单击已选中的内容
QAbstractItemView.EditKeyPressed--
QAbstractItemView.AnyKeyPressed--按下任意键就能修改
QAbstractItemView.AllEditTriggers--以上条件全包括)
(2)设置表格为选择整行
tablewidget-&setSelectionBehavior(QAbstractItemView::SelectRows);&
(参数含义:
AbstractItemView.SelectItems--选中单个单元格
QAbstractItemView.SelectRows--选中一行
QAbstractItemView.SelectColumns--选中一列)
(3)设置单个选中和多个选中
单个选中意味着每次只可以选中一个单元格,多个就是相当于可以选择”一片“那种模式。
tablewidget-&setSelectionMode(QAbstractItemView::ExtendedSelection);&
(4)表格表头的显示与隐藏
对于水平或垂直方向的表头,如果不想显示可以用以下方式进行(隐藏/显示)设置:
tablewidget-&verticalHeader()-&setVisible(true);
tablewidget-&horizontalHeader()-&setVisible(false);
注意:需要 #include &QHeaderView&
(5)设置具体单元格中字体的对齐方式
tablewidget-&item(0, 0)-&setTextAlignment(Qt::AlignHCenter);
(6)设置具体单元格中字体格式
tablewidget-&item(1, 0)-&setBackgroundColor(QColor(0,60,10));
tablewidget-&item(1, 0)-&setTextColor(QColor(200,111,100));
tablewidget-&item(1, 0)-&setFont(QFont(&Helvetica&));&
(7)设置具体单元格的值
tablewidget-&setItem(1, 0, new QTableWidgetItem(str));
(8)把QTableWidgetItem对象内容转换为QString
QString str =ui.qtablewidget-&item(0, 0)-&data(Qt::DisplayRole).toString();
(9)具体单元格中添加控件
QComboBox *comBox = new QComboBox();
comBox-&addItem(&F&);
comBox-&addItem(&M&);
tablewidget-&setCellWidget(0,3,comBox);
(11)合并单元格
tablewidget-&setSpan(2, 2, 3, 2);
//第一个参数:要改变的单元格行数
//第二个参数:要改变的单元格列数
//第三个参数:需要合并的行数
//第四个参数:需要合并的列数
(12)具体单元格中插入图片
tablewidget-&setItem(row, 0, new QTableWidgetItem(QIcon(&:/new/images/kingdemo.ico&),tr(&&)));
(13)设置显示网格
tablewidget-&setShowGrid(true);//显示表格线
(14)设置滚动条
tablewidget-&setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);//去掉水平滚动条
(15)设置行和列的大小设为与内容相匹配
tablewidget-&resizeColumnsToContents();
tablewidget-&resizeRowsToContents();&
(16)对表头文字的字体、颜色进行设置
QTableWidgetItem *columnHeaderItem0 = tableWidget-&horizontalHeaderItem(0); //获得水平方向表头的Item对象
columnHeaderItem0-&setFont(QFont(&Helvetica&)); //设置字体
columnHeaderItem0-&setBackgroundColor(QColor(0,60,10)); //设置单元格背景颜色
columnHeaderItem0-&setTextColor(QColor(200,111,30)); //设置文字颜色
注意:需要 #include &QHeaderView&
(17)获取某一单元格的内容
QString strText = ui.qtablewidget-&item(0, 0)-&text();
(18)QWidget设置边框(样式,宽度及颜色)
tablewidget-&setStyleSheet(&border:1px solid #90949d&);//设置边框
或者tablewidget-&setStyleSheet(QString::fromUtf8(&border:1px solid red&));//设置边框
(19)设置单元格字体颜色、背景颜色和字体字符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&));
(20)设置单元格的大小
可以指定某个行或者列的大小
tableWidget-&setColumnWidth(3,200);
tableWidget-&setRowHeight(3,60);
(21)获得单击单元格的内容
通过实现 itemClicked (QTableWidgetItem *) 信号的槽函数,就可以获得鼠标单击到的单元格指针,进而获得其中的文字信息
connect(tableWidget,SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)),this,SLOT(getItem(QTreeWidgetItem*,int)));
//将itemClicked信号与函数getItem绑定
(22)添加表头内容
header&&tr(&1&)&&tr(&2&)&&tr(&3&)&&tr(&4)&&tr(&5&);
table_widget-&setHorizontalHeaderLabels(header);
tableWidget-&setHorizontalHeaderLabels(QStringList() && tr(&1&)&&tr(&2&)&&tr(&3&)&&tr(&4)&&tr(&5&));
(23)清除
tableWidget-&clear();//清除所有可见数据(包括表头),行还在
tableWidget-&clearContents();//只清除表中数据,不清除表头内容
tableWidget-&setRowCount(0);//连行也清除掉
(24)一些零碎的知识点代码
tablewidget-&setColumnCount(4); //设置列数
tablewidget-&setRowCount(5);//设置行数
tablewidget-&horizontalHeader()-&setDefaultSectionSize(150);
tablewidget-&horizontalHeader()-&setClickable(false); //设置表头不可点击(默认点击后进行排序)
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);//只能单选
setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);//去掉水平滚动条
setVerticalScrollMode(QAbstractItemView::ScrollPerItem);//垂直滚动条按项移动
setAutoScroll(false);//去掉自动滚动
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:50523次
排名:千里之外
原创:21篇
转载:23篇
(2)(1)(2)(14)(18)(7)&>&Qt对话框美化(含TableWidget)
Qt对话框美化(含TableWidget)
上传大小:521KB
Qt对话框美化:QTableWidget
Qt对话框美化:按钮美化
综合评分:4(18位用户评分)
下载个数:
{%username%}回复{%com_username%}{%time%}\
/*点击出现回复框*/
$(".respond_btn").on("click", function (e) {
$(this).parents(".rightLi").children(".respond_box").show();
e.stopPropagation();
$(".cancel_res").on("click", function (e) {
$(this).parents(".res_b").siblings(".res_area").val("");
$(this).parents(".respond_box").hide();
e.stopPropagation();
/*删除评论*/
$(".del_comment_c").on("click", function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_invalid/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parents(".conLi").remove();
alert(data.msg);
$(".res_btn").click(function (e) {
var parentWrap = $(this).parents(".respond_box"),
q = parentWrap.find(".form1").serializeArray(),
resStr = $.trim(parentWrap.find(".res_area_r").val());
console.log(q);
//var res_area_r = $.trim($(".res_area_r").val());
if (resStr == '') {
$(".res_text").css({color: "red"});
$.post("/index.php/comment/do_comment_reply/", q,
function (data) {
if (data.succ == 1) {
var $target,
evt = e || window.
$target = $(evt.target || evt.srcElement);
var $dd = $target.parents('dd');
var $wrapReply = $dd.find('.respond_box');
console.log($wrapReply);
//var mess = $(".res_area_r").val();
var mess = resS
var str = str.replace(/{%header%}/g, data.header)
.replace(/{%href%}/g, 'http://' + window.location.host + '/user/' + data.username)
.replace(/{%username%}/g, data.username)
.replace(/{%com_username%}/g, data.com_username)
.replace(/{%time%}/g, data.time)
.replace(/{%id%}/g, data.id)
.replace(/{%mess%}/g, mess);
$dd.after(str);
$(".respond_box").hide();
$(".res_area_r").val("");
$(".res_area").val("");
$wrapReply.hide();
alert(data.msg);
}, "json");
/*删除回复*/
$(".rightLi").on("click", '.del_comment_r', function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_comment_del/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parent().parent().parent().parent().parent().remove();
$(e.target).parents('.res_list').remove()
alert(data.msg);
//填充回复
function KeyP(v) {
var parentWrap = $(v).parents(".respond_box");
parentWrap.find(".res_area_r").val($.trim(parentWrap.find(".res_area").val()));
评论共有18条
还没有具体看,看看再说
还不错,挺有意思的,学习了
帮助我对TableWidget进行美化 谢谢
Scarlett_OHara
综合评分:
积分/C币:5
综合评分:
积分/C币:8
winston600
综合评分:
积分/C币:3
综合评分:
积分/C币:0
wangwei890702
综合评分:
积分/C币:3
综合评分:
积分/C币:0
综合评分:
积分/C币:3
knightaoko
综合评分:
积分/C币:3
GlimmerAqua
综合评分:
积分/C币:3
VIP会员动态
CSDN下载频道资源及相关规则调整公告V11.10
下载频道用户反馈专区
下载频道积分规则调整V1710.18
spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip
资源所需积分/C币
当前拥有积分
当前拥有C币
输入下载码
为了良好体验,不建议使用迅雷下载
Qt对话框美化(含TableWidget)
会员到期时间:
剩余下载个数:
剩余积分:
为了良好体验,不建议使用迅雷下载
积分不足!
资源所需积分/C币
当前拥有积分
您可以选择
程序员的必选
绿色安全资源
资源所需积分/C币
当前拥有积分
当前拥有C币
(仅够下载10个资源)
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
您的积分不足,将扣除 10 C币
为了良好体验,不建议使用迅雷下载
你当前的下载分为234。
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可奖励5下载分
被举报人:
gongzixiaoya
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
Qt对话框美化(含TableWidget)QT学习笔记 TABLEWIDGET使用说明和增删改操作的实现_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
QT学习笔记 TABLEWIDGET使用说明和增删改操作的实现
&&QT学习笔记 TABLEWIDGET使用说明和增删改操作的实现
阅读已结束,下载文档到电脑
想免费下载本文?
定制HR最喜欢的简历
你可能喜欢qt tablewidget 提取某列数据_百度知道
qt tablewidget 提取某列数据
有一列全是数字,我想将这一列数字装入一个数组里面 要怎么提取?给代码 不要给我说明 谢谢!
我有更好的答案
QVector&quint32&for(int i=0;i&table-&rowCount();i++){
list.append(table-&item(i,index)-&text().toInt());
采纳率:84%
来自团队:
append(table-&item(i;i++){quint32&listQVector&for(int i=0;i&table-&rowCount(),index)-&text()
本回答被提问者和网友采纳
为您推荐:
其他类似问题
您可能关注的内容
列数据的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。Qt tableWidget的查询,怎样通过一个值查询tableWidget是否有那个值,并且光标在那个值上,大神求解啊_百度知道
Qt tableWidget的查询,怎样通过一个值查询tableWidget是否有那个值,并且光标在那个值上,大神求解啊
用qtablewidgetitem表示当前表格的值,判断是否与给定值相等。如果相等,则setCurrentCell(inttableWidget可以像访问矩阵那样访问
采纳率:80%
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 table widget 的文章

 

随机推荐