我在 Qt Creator 中执行此操作。我想只用 QPushButton 而不是 QComboBox 来改变我的 QStackedLayout。这可能吗?有人实施过这个吗?我从 Qt 文档中得到了很多示例,但所有示例都使用 QComboBox(现在是我需要的 QPushButton)。这是我的代码:
#mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
Dialog::Dialog()
{
    QVBoxLayout *mainlayout     =   new QVBoxLayout;
    QVBoxLayout *layouta        =   new QVBoxLayout;
    QVBoxLayout *layoutb        =   new QVBoxLayout;
    QPushButton *tombola        =   new QPushButton("A");
    QPushButton *tombolb        =   new QPushButton("B");
    QPushButton *tombolc        =   new QPushButton("C");
    QFrame      *framea         =   new QFrame;
    QFrame      *frameb         =   new QFrame;
    QStackedLayout *stackia     =   new QStackedLayout;
    layouta->addWidget(tombola);
    layoutb->addWidget(tombolb);
    framea->setLayout(layouta);
    frameb->setLayout(layoutb);
    framea->setMinimumSize(88,88);
    frameb->setMinimumSize(88,88);
    //building frame
    framea->setFrameShape(QFrame::StyledPanel);
    framea->setFrameShadow(QFrame::Raised);
    frameb->setFrameShape(QFrame::StyledPanel);
    frameb->setFrameShadow(QFrame::Raised);
    //get c button smaller
    tombolc->setMaximumWidth(33);
    stackia->addWidget(framea);
    stackia->addWidget(frameb);
    stackia->addWidget(tombolc);
    mainlayout->addLayout(stackia);
    QPushButton     *tombold    =   new QPushButton("D");
    mainlayout->addWidget(tombold);
    setLayout(mainlayout);
    connect(tombold, SIGNAL(clicked()), stackia, SLOT(setCurrentIndex(1))); //CONNECTOR
}
结果
Qt Creator 说:
Object::connect: 没有这样的插槽 QStackedLayout::setCurrentIndex(1)
我的错误是什么?
在搜索和询问 4 天后的第二次机会中,我将 connect() 和函数代码更改为:
连接器:
connect(tombold, SIGNAL(clicked()), stackia, SLOT(change_stack()));
功能:无效对话::change_stack(){stackia->setCurrentIndex(1);}
结果
但 Qt Creator 说:
Object::connect: 没有这样的插槽 QStackedLayout::change_stack()
并立即关闭了窗户。
在我看来,我的代码有错误。但我不知道是什么错误,所以我无法将 QStackLayout 内容/页面更改为另一个页面。我的错误是什么?我相信这实际上很简单,但我只是不知道错误在哪里。
有什么建议吗?