在QTableWidget中使用自定義委託元件

2021-10-22 02:21:53 字數 1653 閱讀 8289

1.自定義委託元件

2.將委託設定給qtablewidget

1.繼承自qitemdelegate

2.重寫以下函式

class fspinboxdelegate : public qitemdelegate

;fspinboxdelegate::fspinboxdelegate(qobject *parent /*= nullptr*/)

:qitemdelegate(parent)

fspinboxdelegate::~fspinboxdelegate()

qwidget* fspinboxdelegate::createeditor(qwidget *parent, const qstyleoptionviewitem &option, const qmodelindex &index) const

void fspinboxdelegate::seteditordata(qwidget *editor, const qmodelindex &index) const

}void fspinboxdelegate::setmodeldata(qwidget *editor, qabstractitemmodel *model, const qmodelindex &index) const

}

class tablewidgettest : public qtablewidget

;tablewidgettest::tablewidgettest(qwidget *parent)

: qtablewidget(parent)

} fspinboxdelegate* dg = new fspinboxdelegate(this);

this->setitemdelegateforcolumn(2, dg);

/* fspinboxdelegate stackdg;

this->setitemdelegateforcolumn(2, &stackdg);//**的第二列 設定委託

//此種設定方式會導致崩潰

*/}tablewidgettest::~tablewidgettest()

之前有朋友碰到過雙擊**但是不出現委託控制項的問題。現給出如下三個方向幫助大家排查(此處以qtablewidget為例)

設定委託的列數是否正確qtablewidget本身是否可以進行編輯qtablewidgetitem本身是否可以進行編輯

說明

1.例如**只有三列。但是將委託設定的列數設定到了錯的列錯(例如第四列,第五列等)

2.看看qtablewidget是否呼叫了setedittriggers(qabstractitemview::noedittriggers);導致qtablewidget無法編輯。

3.看看qtablewidgetitem是否設定了不允許編輯的屬性setflags(qt::noitemflags);導致qtablewidget可以允許編輯,但是qtablewidgetitem本身無法編輯

QTableWidget 搜尋實現

文章目錄 隱藏 新增乙個 qlineedit,連線它的 textchanged 事件,在 textchanged 槽函式中編寫方法,方法內容如下。ui tbwgtrelation setrowhidden i,browhidden 核心 此方式是設定行隱藏和顯示具體根據第二個引數void relat...

QTableWidget 樣式檔案

qt樣式檔案可以方便的對介面進行美化。本篇文章記錄qtablewidget的樣式規則 qtablewidget background transparent 背景色 border 1px solid red 邊框 gridline color rgb 127,127,127 網格線顏色 qtable...

在BroadcastReceiver中使用通知

broadcastreceiver通常需要向使用者傳達發生的某件事或狀態,可以使用通知欄通知提醒使用者。建立通知的過程 1 建立乙個合適的通知 2 獲得通知管理器的許可權 3 向通知管理器傳送通知 建立通知時,需要包含以下幾個部分 1 要顯示的圖示 2 顯示的提示文字 3 傳送它的時間 然後使用co...