分享

QTreeWidget项中添加控件(QCheckBox)和获取控件(QCheckBox)

 水中麒麟 2014-03-10

QTreeWidget项中添加控件(QCheckBox)和获取控件(QCheckBox)

分类: Qt 1236人阅读 评论(0) 收藏 举报

之前一直被这个问题困扰着,因为我用的是QTableWidgetItem自带的QCheckBox。所以想使这个QCheckBox禁用时,根本就获取不到这个对象,只能获取它的状态。今天觉得肯定有办法解决时又继续纠结这个问题来了。所以继续查找资料,看别人的博客,之后无意进到了一个国外的论坛,看到了QTreeWidget的setItemWidget方法。方法的原型为:void QTreeWidget::setItemWidget ( QTreeWidgetItem * itemint columnQWidget * widget );它的作用是为item的第几列设置一个widget控件。而获取item列里面的控件时的方法为:QWidget * QTreeWidget::itemWidget ( QTreeWidgetItem * itemint column ) const;返回控件的指针。

下面贴上代码:.h

  1. #ifndef WIDGET_H   
  2. #define WIDGET_H   
  3.   
  4. #include <QtGui/QWidget>   
  5. #include <QTreeWidget>   
  6. #include <QTreeWidgetItem>   
  7. #include <QCheckBox>   
  8. #include <QHBoxLayout>   
  9. #include <QMessageBox>   
  10.   
  11. class Widget : public QWidget  
  12. {  
  13.     Q_OBJECT  
  14.       
  15. public:  
  16.     Widget(QWidget *parent = 0);  
  17.     ~Widget();  
  18.   
  19. private:  
  20.     QTreeWidget *treeWidget;  
  21.     QHBoxLayout *hLayout;  
  22. };  
  23.   
  24. #endif // WIDGET_H  


.cpp:

  1. #include "widget.h"   
  2.   
  3. Widget::Widget(QWidget *parent)  
  4.     : QWidget(parent)  
  5. {  
  6.     hLayout = new QHBoxLayout(this);  
  7.     treeWidget = new QTreeWidget(this);  
  8.     treeWidget->setColumnCount(2);  
  9.   
  10.     QTreeWidgetItem *top = new QTreeWidgetItem;  
  11.     top->setText(0,"top");  
  12.     treeWidget->addTopLevelItem(top);  
  13.   
  14.     QCheckBox *ckBox = new QCheckBox;  
  15.     ckBox->setText("CheckBox");  
  16.     ckBox->setChecked(true);  
  17.   
  18.     QTreeWidgetItem *item = new QTreeWidgetItem;  
  19.     item->setText(0,"title");  
  20.     top->addChild(item);  
  21.     treeWidget->setItemWidget(item,1,ckBox);                //设置ckBox为item的第二列   
  22.   
  23.     QCheckBox *cpy = (QCheckBox*)treeWidget->itemWidget(item,1);  
  24.     QMessageBox::information(this,"title",cpy->text());     //获取item中Checkbox的文本值   
  25.   
  26.     hLayout->addWidget(treeWidget);  
  27.     this->setLayout(hLayout);  
  28. }  
  29.   
  30. Widget::~Widget()  
  31. {  
  32.       

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多