首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

VMware中Ubuntuqt的 QT ui类有关问题,请qt高手帮忙解决

2012-01-23 
VMware中Ubuntuqt的 QTui类问题,请qt高手帮忙解决widget.cpp: In constructor ‘Widget::Widget(QWidget*)’

VMware中Ubuntuqt的 QT ui类问题,请qt高手帮忙解决
widget.cpp: In constructor ‘Widget::Widget(QWidget*)’:
widget.cpp:10:17: error: ‘class Ui::Widget’ has no member named ‘treeWidget’
widget.cpp: In member function ‘void Widget::init()’:
widget.cpp:15:13: error: ‘class Ui::Widget’ has no member named ‘treeWidget’
widget.cpp:16:57: error: ‘class Ui::Widget’ has no member named ‘treeWidget’
widget.cpp:42:57: error: ‘class Ui::Widget’ has no member named ‘treeWidget’
widget.cpp: In member function ‘void Widget::treeItemChanged(QTreeWidgetItem*, int)’:
widget.cpp:74:34: warning: unused variable ‘parent’
widget.cpp: At global scope:
widget.cpp:68:14: warning: unused parameter ‘column’
make: *** [widget.o] 错误 1

#include <QWidget>
#include<QTreeWidgetItem>
#include "ui_widget.h"

Widget::Widget(QWidget *parent) :
  QWidget(parent),
  ui(new Ui::Widget)
{
  ui->setupUi(this);
  init();
  connect(ui->treeWidget,SIGNAL(itemChanged(QTreeWidgetItem *,int)),
  this,SLOT(treeItemChanged(QTreeWidgetItem *,int)));
 }
  void Widget::init()
  {
  ui->treeWidget->clear();
  QTreeWidgetItem *group1=new QTreeWidgetItem(ui->treeWidget);
  group1->setText(0,"group1");
  group1->setFlags(Qt::ItemIsUserCheckable|Qt::ItemIsEnabled|Qt::
  ItemIsSelectable);
  group1->setCheckState(0,Qt::Unchecked);
  QTreeWidgetItem *subItem11=new QTreeWidgetItem(group1);
  subItem11->setFlags(Qt::ItemIsUserCheckable|Qt::ItemIsEnabled|Qt::
  ItemIsSelectable);
  subItem11->setCheckState(0,Qt::Unchecked);

  QTreeWidgetItem *subItem12=new QTreeWidgetItem(group1);
  subItem12->setFlags(Qt::ItemIsUserCheckable|Qt::ItemIsEnabled|Qt::
  ItemIsSelectable);
  subItem12->setText(0,"subItem12");
  subItem12->setCheckState(0,Qt::Unchecked);

  QTreeWidgetItem *subItem13=new QTreeWidgetItem(group1);
  subItem13->setFlags(Qt::ItemIsUserCheckable|Qt::ItemIsEnabled|
  Qt::ItemIsSelectable);

  QTreeWidgetItem *subItem14=new QTreeWidgetItem(group1);
  subItem14->setFlags(Qt::ItemIsUserCheckable|Qt::ItemIsEnabled|
  Qt::ItemIsSelectable);
  subItem14->setText(0,"subItem14");
  subItem14->setCheckState(0,Qt::Unchecked);
  //第二个分组
  QTreeWidgetItem *group2=new QTreeWidgetItem(ui->treeWidget);
  group2->setText(0,"group2");
  group2->setFlags(Qt::ItemIsUserCheckable|Qt::ItemIsEnabled|
  Qt::ItemIsSelectable);
  group2->setCheckState(0,Qt::Unchecked);

  QTreeWidgetItem *subItem21=new QTreeWidgetItem(group2);
  subItem21->setFlags(Qt::ItemIsUserCheckable|Qt::ItemIsEnabled|
  Qt::ItemIsSelectable);
  subItem21->setText(0,"subItem21");
  subItem21->setCheckState(0,Qt::Unchecked);

  QTreeWidgetItem *subItem22=new QTreeWidgetItem(group2);
  subItem22->setFlags(Qt::ItemIsUserCheckable|Qt::ItemIsEnabled|
  Qt::ItemIsSelectable);
  subItem22->setText(0,"subItem22");
  subItem22->setCheckState(0,Qt::Unchecked);

  QTreeWidgetItem *subItem23=new QTreeWidgetItem(group2);
  subItem23->setFlags(Qt::ItemIsUserCheckable|Qt::ItemIsEnabled|


  Qt::ItemIsSelectable);
  subItem23->setText(0,"subItem23");
  subItem23->setCheckState(0,Qt::Unchecked);

  }

  void Widget::treeItemChanged(QTreeWidgetItem *item,int column)
  {
  QString itemText=item->text(0);
  //选中时
  if(Qt::Checked==item->checkState(0))
  {
  QTreeWidgetItem *parent=item->parent();
  int count=item->childCount();
  if(count>0)
  {
  for(int i=0;i<count;i++)
  {
  //字节点也选中
  item->child(i)->setCheckState(0,Qt::Checked);
  }
  }
  else
  {
  //是字节点
  updateParentItem(item);
  }
  }
  else if(Qt::Unchecked==item->checkState(0))
  {
  int count=item->childCount();
  if(count>0)
  {
  for(int i=0;i<count;i++)
  {
  item->child(i)->setCheckState(0,Qt::Unchecked);
  }
  }
  else
  {
  updateParentItem(item);
  }
  }
  }


  void Widget::updateParentItem(QTreeWidgetItem *item)
  {
  QTreeWidgetItem *parent=item->parent();
  if(parent==NULL)
  {
  return;
  }
  //选中的字节点个数
  int selectedCount=0;
  int childCount=parent->childCount();
  for(int i=0;i<childCount;i++)
  {
  QTreeWidgetItem *childItem=parent->child(i);
  if(childItem->checkState(0)==Qt::Checked)
  {
  selectedCount++;
  }
  }
  if(selectedCount<=0)
  {
  //选中状态
  parent->setCheckState(0,Qt::Unchecked);
  }
  else if(selectedCount > 0 && selectedCount < childCount)
  {
  //部分选中状态
  parent->setCheckState(0,Qt::PartiallyChecked);
  }
  else if(selectedCount==childCount)
  {
  //未选中状态
  parent->setCheckState(0,Qt::Checked);
  }
  //changeFronUser=true;
  }


Widget::~Widget()
{
  delete ui;
}



[解决办法]

探讨

楼上的朋友,我想要的是这个问题的解决方法,谢谢!

[解决办法]
结贴吧,缺少ui文件。
[解决办法]
缺少UI文件,或者UI文件中的对象名称不正确.

热点排行