在往qt的tableview中加圖片時,發現用tableview的icon去顯示圖片有個小問題,就是圖片不能居中。
然后在百度解決方案的時候,發現某位大佬提議使用代理類。
于是我愉快的繼承QItemDelegate這個代理類的時候,產生了一個疑惑。
如果我代理一個QLabel,那么我是不是只能去加載固定的圖片,不能去加載一個我后期指定的圖片,或者一個網上的圖片。
uj5u.com熱心網友回復:
你后期指定也可以呼叫label的setPixmap方法來設定背景呀,只不過你需要一個指標來存盤這個label的地址進行維護uj5u.com熱心網友回復:
在繼承QItemDelegate時,代理的qlabel能在后期呼叫那些qlabel自己的函式么,大佬能不能舉個例子說明下,我也想過去呼叫qlabel的那個函式去設定圖片,但是不知道該怎么去呼叫那些函式,所以只好發帖子求助大佬
uj5u.com熱心網友回復:
不是很明白代理為啥要用QLabel,不是用painter直接畫就行?uj5u.com熱心網友回復:
啊?可以用painter直接在table里畫圖片么,這還真的是觸及了我知識的盲點,我先百度研究研究
uj5u.com熱心網友回復:
使用代理類的painer,畫圖片,計算單元格和圖片的大小,設定圖片在單元格的偏移位置將圖片居中。void myDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
if (index.column() == 1)
{
QStyleOptionViewItem opt(option);
QStyledItemDelegate::paint(painter, opt, index);
QImage image("/home/untitled1/test.png");
painter->drawImage(option.rect.x()+option.rect.width()-image.width()/2, option.rect.y()+((option.rect.height()-image.height())/2), image);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/15475.html
標籤:Qt
上一篇:2020 SWIFT 標準
下一篇:app資料提取
