1. 程式人生 > >QListWidget加入小控件

QListWidget加入小控件

map ict char cat lines gets each ews popu

在寫一個簡單的文件瀏覽器時,遇到一個問題。想實現新建目錄時能像一般的文件管理器那樣,目錄圖標以下有一個編輯框提示用戶給目錄命名(例如以下圖),可是不知道怎麽給單元項QListWidgetItem加入QLineEdit控件。查了好久Qt幫助文檔,最終發現了QListWidget::setItemWidget(),就試了一下。成功加入了,還算愜意。大家假設有更好的方法請告訴我。

技術分享

void QListWidget::setItemWidget(QListWidgetItem * item, QWidget * widget)

設置在給定項目中顯示的小部件。


此功能僅可用於在列表小部件項目的位置顯示靜態內容。假設你想顯示自己定義的動態內容或運行自己定義編輯器部件,使用qlistview和子類化QItemDelegate取代。
這個功能介紹Qt 4.1。

關鍵代碼:

//圖片換成目錄圖標就能夠
int main(int argc,char* argv[])
{
    QApplication  app(argc,argv);

    QListWidget  *listWidget = new QListWidget();
    listWidget->setSpacing(10);
    listWidget->setViewMode(QListView::IconMode);
    listWidget->setIconSize(QSize(100
,100)); QPixmap pix1(QString(":/list/image/1.jpg")); QPixmap pix2(":/list/image/2.jpg"); QListWidgetItem *item1 = new QListWidgetItem(QIcon(pix1.scaled(QSize(100,100))),"picture1"); QListWidgetItem *item2 = new QListWidgetItem(QIcon(pix2.scaled(QSize(100,100))),"picture2"); QLineEdit* line = new
QLineEdit; //創建部件 listWidget->addItem(item1); listWidget->addItem(item2); //先加入項目 item1->setSizeHint(QSize(100,120)); item2->setSizeHint(QSize(100,120)); listWidget->setItemWidget(item2,line); //加入部件 // listWidget->removeItemWidget(item2); listWidget->show(); app.exec(); return 0; }

技術分享

void QListWidget::removeItemWidget(QListWidgetItem * item)

用於移除加入的部件

QListWidget加入小控件