我在 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 内容/页面更改为另一个页面。我的错误是什么?我相信这实际上很简单,但我只是不知道错误在哪里。
有什么建议吗?