我創建了一些對話框,並且在此對話框中我有一個由少數複選框組成的垂直佈局。我想通過包含它們的佈局在運行時訪問這些複選框。這可能嗎?在運行時訪問佈局
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. 在運行時加載動態佈局
- 6. 在運行時自定義QDialog佈局
- 7. Android - 在運行時向主佈局添加布局
- 8. 如何在運行時更改語言而無佈局問題
- 9. Xamarin.Forms佈局可訪問性
- 10. 管理佈局運行時android
- 11. 知道運行時使用的佈局
- 12. Android。幫助運行時佈局設計。
- 13. 運行時Silverlight控件佈局更新
- 14. 運行時動態佈局更改
- 15. 運行時調整佈局參數
- 16. 運行時訪問註釋
- 17. 運行時訪問v-table
- 18. 如何訪問運行時
- 19. 如何在運行時在另一個佈局中插入佈局
- 20. 如何在活動中訪問佈局大布局?
- 21. 在另一個佈局上訪問textview
- 22. 在運行時訪問對象!
- 23. 在運行時訪問UIView寬度
- 24. app.config在運行時訪問異常
- 25. 在運行時訪問資源
- 26. 在運行時無法訪問對象
- 27. 動畫布局到的另一佈局,其距離在運行時
- 28. 在運行時調整佈局大小時閃爍內容
- 29. 在節點js中運行cytospace.js'cose'佈局
- 30. 在運行時在代碼中設置佈局屬性
嗨蒂姆,很好的回答謝謝。 – smallB