qt QTreewidget 获取编辑前后的文本及检测退出编辑状态

写两个信号连接即可
一,
//首先再双击时设置qtreewidget为可编辑,
//双击时 -进入编辑状态记录编辑前的文本
//设置全局变量dcstr
QString dcstr;
dcstr=item->text(0);
connect(ui->treeWidget,&QTreeWidget::itemDoubleClicked,this,[=](QTreeWidgetItem *item, int column)
{
ui->treeWidget->currentItem()->setFlags(ui->treeWidget->currentItem()->flags()|Qt::ItemIsEditable);
});

相关信息:
flags()返回控件当前信息
setflags() 设置控件信息
setflags的参数如下
Constant Value Description
Qt::NoItemFlags 0 It does not have any properties set.
Qt::ItemIsSelectable 1 It can be selected.
Qt::ItemIsEditable 2 It can be edited.
Qt::ItemIsDragEnabled 4 It can be dragged.
Qt::ItemIsDropEnabled 8 It can be used as a drop target.
Qt::ItemIsUserCheckable 16 It can be checked or unchecked by the user.
Qt::ItemIsEnabled 32 The user can interact with the item.
Qt::ItemIsAutoTristate 64 The item’s state depends on the state of its children. This enables automatic management of the state of parent items in QTreeWidget (checked if all children are checked, unchecked if all children are unchecked, or partially checked if only some children are checked).
Qt::ItemIsTristate ItemIsAutoTristate This enum value is deprecated. Use Qt::ItemIsAutoTristate instead.
Qt::ItemNeverHasChildren 128 The item never has child items. This is used for optimization purposes only.
Qt::ItemIsUserTristate 256 The user can cycle through three separate states.

参数之间平列关系: 如 item ->setflags(Qt::NoItemFlags|Qt::ItemIsSelectable|Qt::ItemIsDragEnabled);

二,

//设置控件文本变化的信号关系
//控件发出文本变化信号且文本与双击时不同,则文本改变完成编辑,
//也就是退出编辑状态。

connect(ui->treeWidget,&QTreeWidget::itemChanged,this,[=](QTreeWidgetItem item, int column)
{
if(dcstr!=item->text(0))
{
//dcstr编辑前的文本
//item->text(0)退出编辑后的文本
//相关操作。。。
}
/

*/
});

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: QTreeWidgetItem是Qt中用于在QTreeWidget中显示项目的类。要获取QTreeWidgetItem的标签文本,可以使用QTreeWidgetItem的text()函数。 例如,假设你有一个QTreeWidget,其中包含一个QTreeWidgetItem,你可以这样获取它的标签文本: ``` QTreeWidget *treeWidget = new QTreeWidget(); QTreeWidgetItem *item = new QTreeWidgetItem(treeWidget); item->setText(0, "Item Label"); QString label = item->text(0); // label = "Item Label" ``` 这里假设QTreeWidgetItem的标签在第0列中。如果你想获取不同列的标签文本,可以将第0个参数替换为想要获取的列的编号。 希望这对你有帮助! ### 回答2: QTreeWidgetItem是Qt框架中用于展示树形结构的小部件。它可以包含子项,每个子项可以有多个列,并且可以设置标签文本以便于在树形结构中显示。 要获取QTreeWidgetItem的标签文本,可以使用以下代码: 1. 首先,需要获取QTreeWidgetItem对象。 2. 然后,可以使用QTreeWidgetItem的text()方法来获取指定列的标签文本。这个方法接受一个整数参数,表示列的索引。索引从0开始,对应于子项的列顺序。 下面是一个示例代码: QTreeWidgetItem *item = new QTreeWidgetItem(); // 创建一个QTreeWidgetItem对象 // 设置标签文本 item->setText(0, "标签1"); item->setText(1, "标签2"); item->setText(2, "标签3"); // 获取标签文本 QString text1 = item->text(0); // 获取第一列的标签文本,结果为"标签1" QString text2 = item->text(1); // 获取第二列的标签文本,结果为"标签2" QString text3 = item->text(2); // 获取第三列的标签文本,结果为"标签3" 在上述示例中,首先创建了一个QTreeWidgetItem对象,并且使用setText()方法设置了三个列的标签文本。然后使用text()方法按列索引获取了标签文本并保存到了对应的QString对象中。 通过以上方法,就可以获取QTreeWidgetItem的标签文本了。 ### 回答3: QTreeWidgetItem是Qt框架中用于在树形控件中显示数据的类。要获取QTreeWidgetItem的标签文本,可以使用QTreeWidgetItem的text()方法。 首先,确保已经创建了树形控件和QTreeWidgetItem对象。然后,使用QTreeWidgetItem的text()方法来获取指定列的标签文本。 例如,假设有一个名为treeWidget的树形控件,其中有一个名为item的QTreeWidgetItem对象,该对象位于第一行,第一列。可以使用以下代码来获取这个QTreeWidgetItem的标签文本: QString labelText = treeWidget->topLevelItem(0)->text(0); 上述代码中,使用topLevelItem()方法获取指定索引处的QTreeWidgetItem对象,参数0表示第一行。然后,使用text()方法获取QTreeWidgetItem对象的第一列(参数0)的标签文本获取标签文本后,可以将其用于需要的操作,例如显示在UI界面上或进行进一步的处理。 需要注意的是,QTreeWidgetItem的text()方法返回的是QVariant类型的数据。如果需要将其转换为QString类型的数据进行使用,可以使用toString()方法进行转换。 总而言之,在创建了树形控件,并创建了QTreeWidgetItem对象后,可以使用text()方法来获取QTreeWidgetItem的标签文本,并使用toString()方法将其转换为QString类型的数据进行使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值