Добавить окно прокрутки с кнопками в мою сцену - PullRequest
0 голосов
/ 02 марта 2019

Я пытаюсь добавить поле (позиция: 1140, 485 и размер: 225, 365) с возможностью прокрутки макета с кнопками внутри макета.Я не хочу, чтобы коробка двигалась / меняла размеры.Я хочу, чтобы в окне была полоса прокрутки, с помощью которой мы могли бы прокручивать все кнопки в ней.

Код, который у меня есть, вообще пока не работает, все, что я получаю - это макет, полный кнопок срастяжка (что я не хочу).Единственная вещь, которая работает до сих пор, - это то, что кнопки добавляются в поле в правильном порядке.

Все, что мне нужно, это сделать прокрутку окна способной к прокрутке и сделать так, чтобы коробка НЕ ​​делалаизменить размер, когда слишком много кнопок.

Вот мой код:

QWidget *box = new QWidget(); //creating the box and placing it where I want it
box->move(1145, 485);
box->resize(225, 365);

gameScene->addWidget(box); //adding it to the main scene

//where AM i supposed to use this?
QScrollArea *scrollArea = new QScrollArea();

QGridLayout *layout = new QGridLayout();
box->setLayout(layout);

//testButtons
QPushButton *testButton1 = new QPushButton("Button1");
layout->addWidget(testButton1);
   ....
QPushButton *testButtonN = new QPushButton("ButtonN");
layout->addWidget(testButtonN);

My Project Image

Вы можете увидеть окно наНИЖЕ ПРАВО с названием ИГРА ТРАНСКРИПТ.Я просто хочу, чтобы коробка содержала кнопки, как есть.Но я НЕ хочу, чтобы он изменял размеры, и я действительно хочу, чтобы он был с возможностью прокрутки, поскольку он обрезает кнопки внизу.

1 Ответ

0 голосов
/ 02 марта 2019

QScrollArea setWidget принимает QWidget в качестве параметра.Это означает, что вам нужно будет добавить кнопки к макету как дочерние элементы, а макет будет добавлен как дочерний элемент к виджету, тогда вы сможете установить виджет как дочерний элемент QScrollArea.См. Пример ниже:

QWidget *window = new QWidget;
QPushButton *button1 = new QPushButton("button1");
QPushButton *button2 = new QPushButton("button2");
QPushButton *button3 = new QPushButton("button3");
QPushButton *button4 = new QPushButton("button4");
QPushButton *button5 = new QPushButton("button5");

QGridLayout * mainLayout = new QGridLayout;
QWidget* buttonsContainer = new QWidget;
QVBoxLayout *buttonsContainerLayout = new QVBoxLayout;
QScrollArea *scrollArea = new QScrollArea();

buttonsContainerLayout->addWidget(button1);
buttonsContainerLayout->addWidget(button2);
buttonsContainerLayout->addWidget(button3);
buttonsContainerLayout->addWidget(button4);
buttonsContainerLayout->addWidget(button5);

buttonsContainer->setLayout(buttonsContainerLayout);

scrollArea->setWidget(buttonsContainer);

mainLayout->addWidget(scrollArea);

window->setLayout(mainLayout);
window->setWindowTitle(
    QApplication::translate("testscrollable", "Test Scrollable"));
window->show();

Примечание https://doc.qt.io/qt-5/qscrollarea.html#setWidget

...