**邏輯:
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的資料和書籍很少,大部分...