QTabWidget中的QScrollBar + QScrollAera

时间:2013-04-11 00:20:05

标签: c++ qt qscrollarea

我的问题很简单:如何在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个可见,其他是隐藏,因为它们位于定义区域之外的底部。

有什么想法吗?感谢的。

3 个答案:

答案 0 :(得分:1)

你必须:

  • 为您的网页添加布局(QVBoxLayout
  • 将滚动区域添加到该页面布局
  • 在滚动区域viewport()
  • 中为QVBoxLayout窗口小部件添加布局
  • 将您的QLabel添加到该视口布局

这样您就不需要在每个标签上调用setGeometry

答案 1 :(得分:1)

您需要将小部件设置为滚动区域,并将图片添加到小部件的布局中。查看QScrollArea::setWidget(QWidget *widget)

答案 2 :(得分:0)

我几乎可以肯定你不能将滚动添加到标签窗口小部件,但我的想法是尝试制作更多可以显示的标签,看看默认情况下滑块是否出现。