歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Qt實現復雜的列表控件

Qt實現復雜的列表控件

日期:2017/3/1 9:58:14   编辑:Linux編程

有人問,復雜列表控件怎麼做?

控件布局如下圖,求指點思路

有高手指點如下,

紅框圈起來的是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);

Copyright © Linux教程網 All Rights Reserved