使用Qt的QListWidget完成拖拽功能

2021-06-25 15:19:42 字數 1897 閱讀 3624

**邏輯:

1、         利用方法setviewmode(qlistview::iconmode)來完成qlistwidget的顯示模式設定,即只顯示圖示模式。

2、         利用方法void addtypeanditems(const qstring& strrootpaht, const qstring&strtype)完成對給定檔案中特定模型的讀取工作(實現見附錄)。

3、         利用方法void slotcurrentindexchanged(int index)完成對不同的類別切換不同模型列表的功能(實現見附錄)。

最終實現效果如下圖所示:

拖放時的效果:

方法1:

voidcdockwidget::addtypeanditems(const qstring& strrootpaht, const qstring&strtype)

// 判斷給定的路徑是否存在,不存在則直接返回

qdir dir(strrootpaht + strtype);

if (!dir.exists())

return;

// 查詢目錄下制定的模型檔案fbx和osg

qfileinfolist filelist =dir.entryinfolist(qstringlist() << "*.fbx" <

qlistwidgetitem* pitem;

qlistlistitems;

st_itemdata* itemdata = new st_itemdata;

itemdata->pnode = null;

listitems.clear();

for (int i = 0; i < filelist.size();++i)

qfileinfo info = filelist.at(i);

itemdata->id = i;

itemdata->striconpath =info.absolutepath() + qdir::separator() + info.basename() + ".png";

itemdata->pnode =osgdb::readnodefile(info.absolutepath().tostdstring());

itemdata->strmodelpaht =info.absolutefilepath();

// 對查詢到的模型資訊儲存在map中,供之後使用

m_maplistitems[strtype] = listitems;

方法2:

voidcdockwidget::slotcurrentindexchanged(int index)

qstring strtype =m_pcombobox->itemdata(index, qt::userrole).tostring();

// 當模型類別發生變化時,先清空列表內容,然後查詢相對應的模型新增到列表顯示中

m_plistwidget->clear();

qlistlistitems =m_maplistitems[strtype];

foreach (st_itemdata* item, listitems)

qlistwidgetitem* pitem = newqlistwidgetitem;

pitem->seticon(qicon(item->striconpath));

pitem->setdata(qt::userrole,item->id);

m_plistwidget->additem(pitem);

qrect的使用 qt 使用Qt介面以及邏輯實現

用過qt的朋友 特別是qtcreator的習慣在介面ui上面對應的cpp中寫 但是在pyqt中不是這樣的。pyqt只是個介面,只會生成介面即ui,就算是乙個按鈕也需要在python只自己寫。不會想當然的找槽函式自動生成那麼簡單了。安裝pyqt5 pip3 install pyqt 安裝設計器 pip...

Qt學習 qt共享記憶體的使用

類常用的操作 1 qsharedmemory類物件的建立 利用qsharedmemory類建立例項物件時,必須為該共享記憶體指定關鍵字 即為該共享記憶體起乙個名字 只有當共享記憶體被設定了關鍵字之後,才可以執行建立 create 關聯attach 等操作。為共享記憶體指定關鍵字有兩種方法 通過建構函...

學習QT的使用

我安裝了vs2010的外掛程式qt5.2.1 成功 然後又單獨安裝qt5的ide qt5 creator 但編譯檔案老失敗,即使是qt5自己提供的例子,錯誤為 1 error lnk1123 轉換到coff 期間失敗 檔案無效或損壞 暫時放下qt5,因為網上和市面上有關qt5的資料和書籍很少,大部分...