簡體   English   中英

如果有可用的位置,如何在布局中添加小部件? 否則不加

[英]How to add widget in layout if there is available place for it? Otherwise not to add

在我的程序中,我必須顯示信息(具有不同大小的MarketWidgets),該信息划分為某些頁面(包含MarketWidgets列表的MarketWidgetsList)。 我的第一種方法是在有可用小部件的地方添加小部件,如果沒有放置小部件,則必須創建另一個頁面並將小部件添加到該頁面。 這是可以接受的方法嗎? 為了獲得小部件的大小,我使用QWidget::sizeHint()因為小部件仍未繪制,但似乎不正確。 如果我在布局中使用拉伸,sizeHint是否可以返回不正確的尺寸?
如果布局可以正常顯示小部件,是否有辦法在布局中添加小部件,否則以某種方式表明沒有足夠的空間?

代碼示例

bool  Ui::DynamicMarketsWidget::add_group_market_widget(Ui::GroupMarketWidget *dynamic_group_market_widget)
{ 
    Q_ASSERT(dynamic_group_market_widget); 
    int tmp_height = dynamic_group_market_widget->sizeHint().height();                                     if(m_available_height > tmp_height) 
    { 
        m_market_layout->addWidget(dynamic_group_market_widget); 
        m_available_height -= tmp_height; 
        return true; 
    } 
    return false; 
}

sizeHint()方法sizeHint()窗口小部件的“最佳”或“所需”大小。 如果將窗口小部件分配給布局,則它不一定具有此大小。 當前小部件實際具有的大小可以通過調用方法size()width()height()

您可以嘗試使用此值而不是通過大小提示方法獲得的值來更新m_available_height 只需確保在讀取尺寸之前先分配您的小部件即可。

您可以嘗試這樣的事情:

bool  Ui::DynamicMarketsWidget::add_group_market_widget(Ui::GroupMarketWidget *dynamic_group_market_widget)
{ 
    Q_ASSERT(dynamic_group_market_widget); 
    int tmp_height = dynamic_group_market_widget->sizeHint().height();                                     if(m_available_height > tmp_height) 
    { 
        m_market_layout->addWidget(dynamic_group_market_widget); 
        m_available_height -= dynamic_group_market_widget->height(); 
        return true; 
    } 
    return false; 
}

暫無
暫無

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

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