linux qt控件大全,Qt实现复杂的列表控件

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

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

c8c1110cb81a64c6651c6051f30cfdbd.png

有高手指点如下,

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

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

c523d68e6f4f8cde6298b0ccc0c9b174.png

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

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

8bbae7e17f44a6a9e348e6c011c0b588.png

楼主试验,外面大布局可以用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);0b1331709591d260c1c78e86d0c51c18.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值