QT开发中文网

没有效果

很抱歉,我之前的回答可能有误。在Qt中,布局是按照添加的顺序排列的,无法直接将新的hBoxLayout插入到顶部位置。如果要实现在顶部添加布局的效果,可以使用以下方法:

int i = 0;
QList<QString> lsWhiteList = ProgramTool::getInstance()->GetBlackProgram();
qSort(lsWhiteList.begin(), lsWhiteList.end(), compareString);
for (const QString& str : lsWhiteList) {
    QHBoxLayout* hBoxLayout = new QHBoxLayout();
    m_VL->setContentsMargins(0, 0, 0, 0);
    Form* itm = new Form(this, widgetType);
    itm->setShowStr(str);
    itm->setObjectName(str);
    hBoxLayout->addWidget(itm);

    // 创建一个新的垂直布局,并将原来的布局和新的hBoxLayout添加进去
    QVBoxLayout* tempLayout = new QVBoxLayout();
    tempLayout->addLayout(hBoxLayout);
    for (int j = 0; j < m_VL->count(); ++j) {
        QLayoutItem* item = m_VL->itemAt(j);
        tempLayout->addItem(item->layout()); // 将原来的布局项添加到新布局中
    }

    delete m_VL; // 删除原来的垂直布局

    // 在widget上重新设置新创建的垂直布局
    m_VL = new QVBoxLayout(widget); 
    m_VL->setContentsMargins(0, 0, 0, 0);
    
    for (int j = 0; j < tempLayout->count(); ++j) {
        QLayoutItem* item = tempLayout->itemAt(j);
        m_VL->addItem(item->layout()); // 将新布局项添加到m_VL中
    }
    
    itm->adjustSize();
    itm->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
    i++;
}

这样,通过创建一个新的垂直布局,并在每次循环中重新设置该布局来实现在顶部添加布局的效果。请注意,为了正确显示和管理控件,可能需要根据具体情况进行适当的调整。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=11819

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?