【Qt学习笔记】12。树,列表和表格项目视图

  





QIcon  icon1 (,“。/MyIcon.png”);   ui.ListWidget→addItem (, new  QListWidgetItem (, icon1,“书”,),),





//事先用currentRow()方法获取所选择的下标   QListWidgetItem *, takeItem (, int  row );



class  Test12_1a_12_13 : public  QMainWindow   {   ,,Q_OBJECT      公众:   ,,,Test12_1a_12_13 (QWidget  * parent =, Q_NULLPTR);      私人:   ,,,Ui: Test12_1a_12_13Class 界面;      private 槽:   int  OnBtnRemeve ();   int  OnBtnSwitchView ();   };///////////////////////////Test12_1a_12_13: Test12_1a_12_13 (QWidget  *父母)   :QMainWindow(父)   {   ui.setupUi(这个);//添加数据项   QIcon  icon1(“。/资源/Book.png”);   ui.listWidget→addItem (new  QListWidgetItem (icon1, "书"));      QIcon  icon2(“。/资源/Heart.png”);   ui.listWidget→addItem (new  QListWidgetItem (icon2,“心”));      QIcon  icon3(“。/资源/Location.png”);   ui.listWidget→addItem (new  QListWidgetItem (icon3,,,位置));      断言(连接(ui.btnRemove,大敌;信号(点击(bool)),,,,槽(OnBtnRemeve ()),));      断言(连接(ui.btnSwitchView,信号(点击(bool)),,,,槽(OnBtnSwitchView ())));      }//删除按钮   int  Test12_1a_12_13:: OnBtnRemeve ()   {//当前的选中项(行号)   int  row =, ui.listWidget→currentRow ();   时间=QListWidgetItem *, item  ui.listWidget→takeItem(行);//手动释放内存   if (项),   {   delete 项目;   }   return  0;   }//切换视图按钮(图标方式(平铺),列表)//图标方式:QListView:: IconMode//列表方式:QListView:: ListMode   int  Test12_1a_12_13:: OnBtnSwitchView ()   {   if  (ui.listWidget→viewMode (),==, QListView:: ListMode)   {   ui.listWidget→setViewMode (QListView:: IconMode);   }   其他的   {   ui.listWidget→setViewMode (QListView:: ListMode);   }   return  0;   }



信号:

常用的信号:单击和双击事件

void  itemClicked (, QListWidgetItem * item );   void  itemDoubleClicked (, QListWidgetItem * item );








Qt:: DisplayRole(0),,,,,//一般对应一个字符串,用于显示   Qt: UserRole(32),,,,,,,//自定义数据




三、自定义显示


四,原位编辑

Test12_4a_12_15:: Test12_4a_12_15 (QWidget  *父母)   :QMainWindow(父)   {   ui.setupUi(这个);   Additem(“书”);   Additem(“心”);   ui.listWidget→setItemDelegate (new  MyDelegate (ui.listWidget));   }      void  Test12_4a_12_15: Additem (QString 名称)   {   时间=QListWidgetItem *, item  new  QListWidgetItem ();   项→setData (Qt:: DisplayRole,名称);   项→setFlags (Qt:: ItemIsEnabled  |, Qt:: ItemIsEditable);//注意加上!   ui.listWidget→addItem(项);   }//第一步:创建一个,widget 作为编辑器   QWidget *, MyDelegate:: createEditor (QWidget  *父母,const  QStyleOptionViewItem 和选项,,const  QModelIndex 及指数),const   {   时间=QLineEdit *, editor  new  QLineEdit(父);   return 编辑;   }//第二步:调用编辑器的显示位置   void  MyDelegate: updateEditorGeometry (QWidget  *编辑,const  QStyleOptionViewItem 和选项,,const  QModelIndex 及指数),const   {   编辑→setGeometry (option.rect);   }//第三步:初始化显示数据   void  MyDelegate: setEditorData (QWidget  *编辑,const  QModelIndex 及指数),const   {   QString  text =, index.data (Qt:: DisplayRole) .toString ();   QLineEdit *, ed =, (QLineEdit *)编辑器;   ed→setText(文本);//((QLineEdit *)编辑)→setText(文本);   }//第四步:用户完成编辑,或编辑器被关闭时,提供数据到模型   void  MyDelegate: setModelData (QWidget  *编辑,QAbstractItemModel  *模型,const  QModelIndex 及指数),const   {   QLineEdit *, lineEdit =, (QLineEdit *)编辑器;   QString  value =, lineEdit→文本();   模型→setData(指数,时间价值,大敌;;Qt:: DisplayRole);   null   null   null   null   null

【Qt学习笔记】12。树,列表和表格项目视图