QListWidget加入小控件
阿新 • • 發佈:2017-08-10
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加入小控件