QT中设置QTreeWidget某一列可编辑
来源:互联网 发布:河南极速网络 编辑:程序博客网 时间:2024/06/05 10:47
大家都知道,在Qt中, QTreeWidget都是QTreeWidgetItem的形式来组织的,也就是说如果单独设置属性的话,可以使得某一行可以编辑或者不可编辑
QTreeWidgetItem*->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsEditable);// 设置某一行的内容可编辑
。
QTreeWidgetItem*->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsEditable);// 设置某一行的内容可编辑
。
这里给大家介绍个方法来使某一列仅可编辑。
QTreeWidget::openPersistentEditor ( QTreeWidgetItem * item, int column = 0 )可用来打开某一行的某一列的编辑状态
QTreeWidget::closePersistentEditor ( QTreeWidgetItem * item, int column = 0 )则可以用来关闭某一行某一列的始终编辑状态
在鼠标双击树控件的某个部分的时候,树控件会发出一个消息itemDoubleClicked ( QTreeWidgetItem * item, int column ),如果我们捕捉这个消息 ,并判断Column的值,就可以使得某一列可以编辑,而其它列不可编辑。但是由于openPersistentEditor 会使得这个单元格始终可编辑 ,及时鼠标已经没有选中该单元格了,所以,我们还需要在用户编辑完当前单元格时,调用closePersistentEditor来关闭单元格始终可以编辑状态,可以在itemSelectionChanged()信号的信号处理函数处理(就是选中不修改值的,也会发出此信号)。
关键代码部分:
在构造函数中:
在构造函数中:
connect(ui->feederset_treeWidget,SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)),
this,SLOT(openEditor(QTreeWidgetItem*,int)));
connect(ui->feederset_treeWidget,SIGNAL(itemSelectionChanged()),
this,SLOT(closeEditor()));
ui->feederset_treeWidget->setStyleSheet("QTreeWidget::item{height:20px}");// 设置行距大小,可以防止编译修改完成以后,行距会发生变化
this,SLOT(openEditor(QTreeWidgetItem*,int)));
connect(ui->feederset_treeWidget,SIGNAL(itemSelectionChanged()),
this,SLOT(closeEditor()));
ui->feederset_treeWidget->setStyleSheet("QTreeWidget::item{height:20px}");// 设置行距大小,可以防止编译修改完成以后,行距会发生变化
/* 在两个槽处理函数中 */
// 设置除了第一列和第五列之外的列,双击的可以修改
void xdlConfig::openEditor(QTreeWidgetItem *item, int column)
{
if(column != 0 && column != 4)
{
ui->feederset_treeWidget->openPersistentEditor(item,column);// 设置某一item可以编辑
temItem = item;
temColumn = column;
}
}
// 当修改完以后或者选中其他列的时候,关闭可编辑状态
// 设置除了第一列和第五列之外的列,双击的可以修改
void xdlConfig::openEditor(QTreeWidgetItem *item, int column)
{
if(column != 0 && column != 4)
{
ui->feederset_treeWidget->openPersistentEditor(item,column);// 设置某一item可以编辑
temItem = item;
temColumn = column;
}
}
// 当修改完以后或者选中其他列的时候,关闭可编辑状态
void xdlConfig::closeEditor()
{
//QMessageBox::question(this,"修改",QString("%1").arg(temColumn),QMessageBox::Yes,QMessageBox::No);
if(temItem != NULL)
{
ui->feederset_treeWidget->closePersistentEditor(temItem,temColumn);// 设置某一item不可以编辑
}
}
{
//QMessageBox::question(this,"修改",QString("%1").arg(temColumn),QMessageBox::Yes,QMessageBox::No);
if(temItem != NULL)
{
ui->feederset_treeWidget->closePersistentEditor(temItem,temColumn);// 设置某一item不可以编辑
}
}
阅读全文
0 0
- QT中设置QTreeWidget某一列可编辑
- QT中设置QTreeWidget某一列可编辑
- QT中如何让QTreeWidget某一列可以编辑,如何实现某一列控件的自定义化
- QT中如何让QTreeWidget某一列可以编辑,如何实现某一列控件的自定义化
- QTreeWidget中对于其中item的可编辑属性的设置
- easyUI 设置列可编辑
- Qtablewidget设置某一列不可编辑
- Qt QTreeWidget 固定第一列
- QTreeWidget控件设置某列可编辑
- GridControl设置部分列可编辑
- Qt读写Xml文件、QTreeWidget项实现可拖动、编辑、添加、删除等
- 设置QTreeWidget的列宽
- 设置QT中QTreeWidget的水平横向滚动条按需出现
- 设置datagrid中的某一项为可编辑状态
- Qt中QTreeWidget的使用
- Qt程序学习(三)------QTreeWidget、右键菜单、动态改变comboBox、QTreeWidgetItem的对应列的文字编辑
- QT中使用Qcombox和QCompleter实现可编辑的combox下拉提示,并设置样式
- Qt QTreeWidget的行间距设置
- JSCore的基本使用====
- linux社区工作经验总结
- vim-manual学习
- 深度学习word2vec笔记之基础篇算法篇应用篇--写的非常到位
- Warshall传递闭包算法的学习与实现
- QT中设置QTreeWidget某一列可编辑
- 重置密码逻辑
- P1019 单词接龙
- Qt文件封包
- WebView加载H5界面后的返回键问题
- 表分区
- 统计学习方法-学习总结
- 学习java必知的概念
- STM32F042F6P6生成HID工程模拟USB鼠标