• 5177阅读
  • 5回复

关于QTreeWidget和QTreeWidgetItem的消息响应问题 [复制链接]

上一主题 下一主题
离线xiaodong
 
只看楼主 倒序阅读 楼主  发表于: 2009-05-24
  树的一些设置
    this->setColumnCount(2);
    this->setHeaderLabels(QStringList()<< tr("Key") << tr("Value"));


       if(   根据key的不同,生成不同的控件 , 这里仅以 spin为例  )  //表示诸如 设置 x,y,w,h之类的控件
        {
            QSpinBox *spin = new QSpinBox;
            spin->setAutoFillBackground(true);
            spin->setRange(0,65536);
            this->setItemWidget(newItem,1,spin);
            connect(spin, SIGNAL(valueChanged(int )), this, SLOT(valueChanged(int )));
        }


为了得到改变的值,我用了下面的槽来响应
但问题是 this->currentItem() 的地址是空的,导致我无法取得改变的值,

所以想问下,如何在QmyTreeWidget里面知道,是哪个QTreeWidgetItem的QSpinBox改变的?

void QmyTreeWidget::valueChanged(int value)
{

    QString key = this->currentItem()->text(0);
    QString str = QString("%1").arg(value);

    emit valueChanged(key, str);
}
离线jorneyr

只看该作者 1楼 发表于: 2009-05-24
void QTreeWidget::currentItemChanged ( QTreeWidgetItem * current, QTreeWidgetItem * previous )   [signal]

This signal is emitted when the current item changes. The current item is specified by current, and this replaces the previous current item.
离线xiaodong
只看该作者 2楼 发表于: 2009-05-24
是否能告知具体怎么用呢
我同时还要处理valuechange这个single呢
离线duduqq

只看该作者 3楼 发表于: 2009-05-25
把SIGNAL改为currentItemChanged
离线xiaodong
只看该作者 4楼 发表于: 2009-05-25
这样好像不行啊,因为我点QSpinBox上下+-的时候,并没有触发currentItemChanged这个single啊
离线20044454
只看该作者 5楼 发表于: 2009-09-04
LZ 共享一下哈,老弟也用到了 谢谢
让我做一个Qt的大牛!!!!
快速回复
限100 字节
 
上一个 下一个