我創建了一些對話框,並且在此對話框中我有一個由少數複選框組成的垂直佈局。我想通過包含它們的佈局在運行時訪問這些複選框。這可能嗎?在運行時訪問佈局
Q
在運行時訪問佈局
0
A
回答
1
如果你有一個名爲對話框myDialog
您可以通過
myDialog->layout()
訪問它的佈局本身自QObject繼承的佈局和類似的可以訪問QObject::children()
方法。
例如,你可以做這樣的事情:
QCheckBox* currentCheckBox;
foreach(QObject* child, myDialog->layout()->children())
{
currentCheckBox = qobject_cast< QCheckBox* >(child);
if(!currentCheckBox) continue;
// do anything with the checkbox here
}
0
@Tim:也有類似的問題,發現你的答案非常有幫助。
但至少使用PyQt4我發現佈局本身似乎沒有孩子(children()
給出了一個空的列表),相反,它們是由我們的佈局所在的小部件「parented」。
所以在Python中,那將是myDialog.children()
而不是myDialog.layout().children()
。
然後,很明顯,有可能是這些孩子中的其他元素,從我們的佈局不一定來了(至少在我的情況下有)。
此外,在更一般的情況下,the order of QObject's children could be unstable - 儘管我認爲複選框這是不太可能的情況下。
所以,我寧願使用的佈局的.itemAt()
方法。
我用C++猜想它會是這樣的
for(int i=0; ++i; i<layout->count())
{
widget = layout->itemAt(i)->widget()
// ... do whatever you want
}
在Python,這是
for i in xrange(layout.count()) :
widget = layout.itemAt(i).widget()
# ... whatever)
可能存在的東西,在這裏改變QT3以及Qt4之間?
相關問題
- 1. 運行時線性佈局問題
- 2. 運行時佈局操作
- 3. Android運行時佈局
- 4. 宏訪問在運行時
- 5. 在運行時自定義QDialog佈局
- 6. 在運行時加載動態佈局
- 7. 運行時在另一個佈局上?
- 8. 在運行時設置佈局參數
- 9. 佈局沒有在運行時出現
- 10. 在運行時更改佈局模板
- 11. 佈局在運行時不顯示AsyncTask
- 12. 在運行時展開佈局
- 13. 在運行時構建佈局android
- 14. Android - 在運行時向主佈局添加布局
- 15. 如何在運行時更改語言而無佈局問題
- 16. 在訪問2010運行時訪問2003應用程序運行時錯誤
- 17. MS訪問報告佈局
- 18. 訪問線性佈局?
- 19. Xamarin.Forms佈局可訪問性
- 20. 即時運行不與佈局21
- 21. iOS動態佈局(運行時)
- 22. GoogleWebToolkit運行時動態佈局活動
- 23. 運行時調整佈局參數
- 24. 管理佈局運行時android
- 25. 運行時Silverlight控件佈局更新
- 26. 運行時動態佈局更改
- 27. 知道運行時使用的佈局
- 28. Android。幫助運行時佈局設計。
- 29. 運行時更改xml或佈局
- 30. 運行時訪問註釋
嗨蒂姆,很好的回答謝謝。 – smallB