设为首页 加入收藏

TOP

Qt实现复杂的列表控件
2014-11-24 07:34:58 来源: 作者: 【 】 浏览:0
Tags:实现 复杂 控件

有人问,复杂列表控件怎么做?


控件布局如下图,求指点思路



有高手指点如下,


红框圈起来的是QLabel,1个进度条,2个按钮(toolButton),1个布局,1个QWidget(容器),组成一个widget。


放进QListWidget里。进度条用样式表美化一下,参考:点击这里



其中主要用这个函数:void QListWidget::setItemWidget(QListWidgetItem * item, QWidget * widget) 然后应用css样式美化。


类似的,如下面的界面也可以借鉴以上思路:



楼主试验,外面大布局可以用QListWidget,然后将listItem写成自定义的控件集合,用函数setItemWidget()加载就好。


可以将自定义的控件集单独写成一个类,然后用这个类生成表项。


代码参考如下:


ui->alarmListWidget->setResizeMode(QListView::Adjust);
ui->alarmListWidget->setAutoScroll(true);

QWidget *wContainer = new QWidget(ui->alarmListWidget);
QHBoxLayout *hLayout = new QHBoxLayout(wContainer);


QLabel *alarmIcon = new QLabel(tr("beih"));
QLabel *placeLabel = new QLabel(tr("北京"));
QLabel *videoNumLabel = new QLabel(tr("8"));
QLabel *dateLabel = new QLabel(tr("2013-4-16"));
QLabel *alarmMsgLabel = new QLabel(tr("违章搭建"));
//QPushButton *pDeleteBtn = new QPushButton(QIcon(),tr("delete"));


hLayout->addWidget(alarmIcon);
hLayout->addStretch(1);//将空白没有widget的地方分成了若干份,按比例分配
hLayout->addWidget(placeLabel);
hLayout->addStretch(1);
hLayout->addWidget(videoNumLabel);
hLayout->addStretch(1);
hLayout->addWidget(dateLabel);
hLayout->addStretch(1);//将空白没有widget的地方分成了若干份,按比例分配
hLayout->addWidget(alarmMsgLabel);
hLayout->setContentsMargins(5,0,0,5);//关键代码,如果没有很可能显示不出来
// wContainer->setLayout(hLayout);//如果layout在创建时就已经将父窗口指针当参数,那就不用setlayout
wContainer->resize(350,50);
// wContainer->show();


QListWidgetItem *alarmItem = new QListWidgetItem(ui->alarmListWidget);
ui->alarmListWidget->setItemWidget(alarmItem,wContainer);


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Qt Creator中无法使用OpenCV2中新.. 下一篇OpenGL三维球体数据生成与绘制【..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Redis 分布式锁全解 (2025-12-25 17:19:51)
·SpringBoot 整合 Red (2025-12-25 17:19:48)
·MongoDB 索引 - 菜鸟 (2025-12-25 17:19:45)
·What Is Linux (2025-12-25 16:57:17)
·Linux小白必备:超全 (2025-12-25 16:57:14)