本人接觸QT庫不久,實踐中碰到如下問題。
如圖所示,QTableWidget中第三列嵌入的是自定義物件(三個按鈕的組合,洗掉,向上,向下),想通過這三個按鈕實作相應功能。 但在使用中無法定位所點按鈕所在的行。
在網上找到了如圖2所示的方法。 sender()定位發射信號的物件,然后通過button.pos()和self.indexAt()來定位行。但是實際使用時發現button.pos()回傳的位置是相對于它所在父控制元件TableBtnGroup控制元件的。 因此這些按鈕無法通過indexAt來定位行。 如果換作普通QPushButton則不存在此問題。
我想知道我還有什么方法可以定位按鈕的行號呢?

uj5u.com熱心網友回復:
mapToParent不知道可不可以。。或者直接多載按鈕(或者放按鈕的那個控制元件)在按鈕里寫行號id,信號全接到外面同一個槽函式里,通過判斷id檢測是哪個行?
uj5u.com熱心網友回復:
已經解決了。
在創建按鈕組合控制元件的同時給每個按鈕添加了一條屬性father,即組合控制元件的id或者說句柄。 當用sender()定位到按鈕時呼叫按鈕的father屬性也就相當于獲取了組合控制元件,此時再用self.indexAt(button.father.pos()).row()就定位到發射按鈕的行號了。
uj5u.com熱心網友回復:
樓主具體怎么寫的?是用setProperty嗎? setProperty("father", point) ?uj5u.com熱心網友回復:
我也是剛剛接觸QT5 我在QtableWidget中嵌入了一個QWidget,QWidget上面橫向布局了3個QPushButton 這樣每一列都有3個QPushButton,但是我現在處理信號的時候,一直搞不定。轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/59894.html
標籤:Qt
