2010-12-06 90 views
0

我正在尋找最佳方式在Qt設計器中創建的預定義佈局中動態地交換和切換Qt中的控件。Qt - 將動態控件添加到佔位符中

我來自ASP.NET的背景,我經常使用「佔位符」這種類型的任務的想法,並在運行時添加控件作爲孩子。

Qt是否支持這種類型的功能或類似的東西?

回答

0

你可以只添加一個佈局控制在任何部件,稍後動態添加控件的佈局:

for(int i = 0; i < 10; i++) 
{ 
    QLabel *plbl = new QLabel(myform); 
    plbl->setText(QLabel::tr(L"My dynamic text box")); 
    mylayout->addWidget(plbl); 
} 

編輯:有許多支持不同的「補」的風格不同的Layout類(例如,水平到明年彼此,網格佈局,垂直佈局等)。您不需要任何佔位符或類似的東西 - 只需填寫一個小部件(或佈局)即可。

0

如果你的Qt佈局已經使用了佈局,那麼最好的想法是在佈局樹中留下一些地方用於運行時控制,或者甚至爲這些佈局樹設置一個空白布局。佈局可以動態地添加或刪除小部件和子佈局,以解決問題。如果你想在刪除舊的插件後插入新的widgets,接口可能會閃爍,因爲qt會嘗試重新使用臨時釋放的空間。如果有任何緩慢的渲染小部件,它可能會減慢應用程序的速度。

另一個靈魂將插入空的小部件 - 這更類似於ASP.NET的方法。這是一個更粗略的方法,但可能是避免界面閃爍的好方法。它會阻止佈局重用空間,即使你沒有顯示任何窗口小部件並留下未使用的空間 - 它可能會建議用戶,在一些交互之後可能會出現一些東西 - 如果期望的行爲,我會這樣建議。

如果你有幾套你可能會考慮使用QStackedWidget同一組始終apperaing控制,它允許你在設計階段和運行組之間SWICH已經創建這些小部件。