我的问题很简单:如何在QScrollArea中设置QScrollBar。我已经测试了很多东西,但没有任何效果。。。也许在QTabWidget中设置QScrollArea是一个问题吗?这是代码:

void    GamesWindow::createTabSucces()
{
    std::string nameImg;

    _succesPage = new QWidget(_tab);
    _tab->addTab(_succesPage, "      Succes       ");

    scrollArea = new QScrollArea(_succesPage);
    scrollArea->setBackgroundRole(QPalette::Dark);
    scrollArea->setFixedSize(500,500);
    /*  Integration of QScrollBar  */
    for (int i = 0; i < 45; i++)
    {
        nameImg = "img/allAchiv/";
        nameImg += intToString(i + 1);
        nameImg += ".jpg";
        _imgSucc[i] = new QLabel(scrollArea);
        _imgSucc[i]->setPixmap(QPixmap(QString(nameImg.c_str())));
        _imgSucc[i]->setGeometry((14 + (85 * (i % 5))), 46 + ((i / 5) * 85), 60, 60);
    }
}


实际上,我在创建了QScrollArea的选项卡中添加了图片(例如8-9行图片),但是只有5个可见,其他隐藏了,因为它们位于定义区域之外的底部。

任何想法 ?谢谢。

最佳答案

你必须:


在页面上添加布局(QVBoxLayout
将滚动区域添加到该页面布局
在滚动区域(viewport())中向QVBoxLayout小部件添加布局
将QLabels添加到该视口布局


这样,您无需在每个标签上调用setGeometry

10-04 21:17