Solved make visible 1 layout at a time
-
hello qt community,
i'm trying to make visible one layout at a time, i want something like the program bellow but with layoutsQStackedLayout* stackedwidget= new QStackedLayout(); stackedwidget->addwidget(widget1);// the stackedlayout dispalayed ; stackedwidget->addwidget(widget2);// the stackedlayout; stackedwidget->setCurrentwidget(widget1);
i used the additem and setcurrentindex but i have a message said that QStackedLayout::addItem: Only widgets can be added
so i'm wondering if someone had this problem before, i need help please
thanks again ..
-
Hi
And you are 10.000% sure that it was indeed a
QWidget you tried to insert?in any case, the sample from the docs works without any warnings
and i could not make it say
"QStackedLayout::addItem: Only widgets can be added"QWidget *firstPageWidget = new QWidget; QWidget *secondPageWidget = new QWidget; QWidget *thirdPageWidget = new QWidget; QStackedLayout *stackedLayout = new QStackedLayout; stackedLayout->addWidget(firstPageWidget); stackedLayout->addWidget(secondPageWidget); stackedLayout->addWidget(thirdPageWidget); QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addLayout(stackedLayout); centralWidget()->setLayout(mainLayout);
So if you can make it say so, please show the actual code with all definitions.
and also please mention Qt version , you are using.Also, just as a note. There is also QStacketWidget that often is easier to use than
the raw QStackedLayout. -
ow sorry i'm using Qt5.
i think you didn't read the question well or that i wasn't clear enough :p , i'm trying to have one layout at a time and not one widget at a time it's mean that instead of inserting a widget in a stackedwidget i want to insert layouts. and use one layout at a time.
i know that their is a qstacked widget but i thought that qstacked layout would allow me to stack layouts which is not the case :).
thanks again
-
@benamiar
Hi,
i think its me that didnt read it well :)
On second read, i see you want layouts.It won't accept layouts. (AFAIK)
However, just use a widget, put the wanted layout on that and use it that way.
The Widget is transparent so should not matter.Ah. yes. stacked layout kinda sounds like layouts in a stack indeed :)
-
i didn't understand what your trying to say so you suggest to put a layout on widget ?
it won't even compile we can't convert a lyout to a widget, perhaps a widget can be converted to a layout but not the reverse.
-
@benamiar the idea is to create a new QWidget, assign it your Layout, and than add it to the QStacledWidget
-
@j-hilk assign a layout to a widget ? how is that even possible? you can add a widget to a layout but a layout to a widget? i'm lost ?
-
@benamiar ?
https://doc.qt.io/qt-5/qwidget.html#setLayout
A layout isn't just somewhere in the air it is on a widget. -
@benamiar a fanction of every QWidget based widget
https://doc.qt.io/qt-5/qwidget.html#setLayout
edit: ninja sniped by @jsulm 😆
-
@j-hilk thanks guys it's working