我想知道如何創建(使用PyQt4)衍生QTabWidget
與每個標籤標題旁邊的複選框?就像這樣:QTabWidget與標題中的複選框
4
A
回答
8
其實我選擇只子類QTabWidget。
在創建新選項卡時添加了複選框,並將其保存到列表中以獲取其索引。
setCheckState/isChecked方法旨在控制由其選項卡索引指定的每個CheckBox的狀態。
最後,「stateChanged(int)」信號被捕獲,並用指定相關複選框索引的額外參數緩存。
class CheckableTabWidget(QtGui.QTabWidget):
checkBoxList = []
def addTab(self, widget, title):
QtGui.QTabWidget.addTab(self, widget, title)
checkBox = QtGui.QCheckBox()
self.checkBoxList.append(checkBox)
self.tabBar().setTabButton(self.tabBar().count()-1, QtGui.QTabBar.LeftSide, checkBox)
self.connect(checkBox, QtCore.SIGNAL('stateChanged(int)'), lambda checkState: self.__emitStateChanged(checkBox, checkState))
def isChecked(self, index):
return self.tabBar().tabButton(index, QtGui.QTabBar.LeftSide).checkState() != QtCore.Qt.Unchecked
def setCheckState(self, index, checkState):
self.tabBar().tabButton(index, QtGui.QTabBar.LeftSide).setCheckState(checkState)
def __emitStateChanged(self, checkBox, checkState):
index = self.checkBoxList.index(checkBox)
self.emit(QtCore.SIGNAL('stateChanged(int, int)'), index, checkState)
這也許不是做事情的最佳方式,但至少它仍然是非常簡單的,涵蓋我所有的需要。
2
最好的辦法是
- 創建一個定製的TabBar,CheckedTabBar(繼承
QTabBar
) - 創建自定義TabWidget,CheckedTabWidget(繼承
QTabWidget
) - 添加一種方式來測試選項卡是否被選中,當複選框被切換時可能會有一些信號:)
你應該設置自定義的TabBar在checkedtabwidget構造,像這樣:
CheckedTabWidget::CheckedTabWidget(QWidget* parent) : QTabWidget(parent)
{
setTabBar(new CheckedTabBar(this));
}
相關問題
- 1. 標題欄標題中的複選框
- 2. 部分標題與複選框
- 3. Android MultiSelectListPreference與標題中的「全選」複選框
- 4. 問題與複選框選中
- 5. 避免QTabWidget中重複的選項卡
- 6. NSTableView列標題中的複選框
- 7. 標題欄中的Slickgrid select複選框
- 8. 執行復選框標題
- 9. 複選框問題與IE6
- 10. 問題與Javascript複選框
- 11. 問題與複選框
- 12. 問題與複選框
- 13. 選中使用標題複選框在asp.net網格中的所有複選框
- 14. 複選框選擇與jQuery的問題
- 15. 當取消選中複選框時,取消選中標題複選框
- 16. ExtJS 4用複選框標題選擇多個CheckColumn複選框
- 17. 如何選擇/取消選中生成的複選框行與單獨的複選框在標題
- 18. 與相關聯的複選框時複選框內標籤
- 19. 複選框中的複選標記
- 20. 複選框與標籤中間
- 21. 複合框與WinForms中的複選框
- 22. 標題複選框通過選中所有複選框進行選擇
- 23. 問題與複選框和文本框
- 24. 與選中的複選框複製行
- 25. 在QT中標識選項卡Qtabwidget
- 26. MDL複選框問題:不希望標籤激活複選框
- 27. 標題組上的複選框Datawindow Powerbuilder
- 28. QtableWidget標題上的複選框
- 29. 出口問題與GridView的複選框
- 30. Primefaces的dataTable與複選框問題
謝謝,但我不明白在哪裏把CheckBox ... – Jib 2011-04-28 17:58:00
你必須實現自己的標籤欄,按標題放置複選框。 – gnud 2011-04-29 07:43:24
謝謝!我發佈了我的代碼以防其他人感興趣。 – Jib 2011-05-07 11:05:13