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。树,列表和表格项目视图