有人問,復雜列表控件怎麼做?
控件布局如下圖,求指點思路
有高手指點如下,
紅框圈起來的是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);