簡體   English   中英

Qt-將動態控件添加到占位符

[英]Qt - Adding dynamic controls to a placeholder

我正在尋找從Qt Designer創建的預定義布局上在Qt中動態交換控件的最佳方法。

我來自ASP.NET背景,在這種背景下,我經常會使用“占位符”的概念來處理此類任務,並在運行時將控件作為子項添加。

Qt是否支持此類功能或類似功能?

您可以將布局控件添加到任何窗口小部件,然后將控件動態添加到布局:

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

編輯:有不同的布局類支持不同的“填充”樣式(例如,水平並排,網格布局,垂直布局等)。 您不需要任何占位符或類似的占位符-只需一個小部件(或布局)作為父級即可填充。

如果您的Qt布局已經使用布局,那么最好的想法是在布局樹中為運行時控件保留一些位置,或者僅為那些保留空白。 布局具有動態添加或刪除小部件和子布局的能力,從而解決了該問題。 如果要在刪除舊窗口小部件后立即插入新窗口小部件,則qt會嘗試重用臨時釋放的空間,因此可能會閃爍。 如果存在任何緩慢的渲染小部件,則可能會使應用程序變慢。

另一個選擇是插入空窗口小部件-與ASP.NET方法更相似。 這是一種比較粗糙的方法,但可能是避免界面閃爍的好方法。 即使您不顯示任何窗口小部件並留下未使用的空間,它也將防止布局重用空間-這可能會向用戶建議,在進行一些交互之后,此處可能會出現一些東西-如果希望這樣做,我會建議這種方式。

如果您總是在同一組中評估多套控件,則可以考慮使用QStackedWidget,這使您可以在設計階段創建這些控件,並在運行時將其夾在組之間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM