Qt實現複雜的列表控件

有高手指點如下,

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章