做一個17行9列的QTableWidget,在第一列需要實作這樣的效果:雙擊第一列某個單元,單元顯示出QComboBox,然后選擇一個專案,作為該單元的內容,并且獲取到該內容后,能夠只顯示該內容而不顯示QComboBox,然后再次雙擊,可以重復上面的操作。我知道可以采用 委托 來處理,但是有些麻煩。是否可以采用 setCellWdget(),removeCellWidget(),cellWidget()3個函式來實作這個操作呢? removeCellWidget()是怎樣的效果,貌似不會徹底洗掉該QComboBox,而再次設定某個單元格的widget為QComboBox,程式會例外退出,不知道是怎么回事。代碼說明如下:該函式回應雙擊事件,treecomboxs,labels分別是已經初始化好的QVector,也是17個元素。代碼只是測驗一下再次點擊某個單元的時候,是否會例外退出。幫助檔案里說,設定新的cellwidget時,會自動取代掉以前的cellwidget,我試了不成功,所以加了removeCellWidget試試看,可以保證程式其他地方是沒有問題的。僅貼出bug出現的代碼。void ParameterTable::onDoubleClickedCell(int row, int column){ if(column == 0) { this->removeCellWidget(row,0); this->setCellWidget(row,0,treecomboxs[row]); this->removeCellWidget(row,0); this->setCellWidget(row,0,labels[row]); }}
uj5u.com熱心網友回復:
最好的實作方法就是寫delegate.uj5u.com熱心網友回復:
你把你的view的那行列值用QStringList賦值 雙擊自動變comboxuj5u.com熱心網友回復:
QTableWidget插入widget后在隱藏再顯示 如果你delete widget 你會發現記憶體刪了 界面上未洗掉 這等于記憶體上還是有記憶體未刪uj5u.com熱心網友回復:
樓主解決了嗎?我現在也遇到這個ComboBox好像只能用一次的情況轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/277192.html
標籤:其他技術討論專區
