これは Qt Creator で行います。QStackedLayout を QComboBox ではなく QPushButton のみで変更したいと考えています。これは可能ですか?誰かがこれを実装しましたか?Qt Documentation から多くの例を入手しましたが、すべての例で 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 作成者 言います:
Object::connect: そのようなスロットはありません QStackedLayout::setCurrentIndex(1)
私の間違いは何ですか?
検索して 4 日間尋ねた後の 2 回目のチャンスで、connect() と関数コードを次のように変更しました。
コネクタ:
connect(tombold, SIGNAL(clicked()), stackia, SLOT(change_stack()));
FUNCTION : 無効 Dialog::change_stack() { stackia->setCurrentIndex(1); }
結果
しかし、Qt Creator は次のように述べています。
Object::connect: そのようなスロットはありません QStackedLayout::change_stack()
そしてすぐに窓が閉まりました。
私の目には、私のコードにはエラーがあります。しかし、どのエラーが発生したのかわからないため、QStackLayout のコンテンツ/ページを別のページに変更することはできません。私の間違いは何ですか?これは実際には非常に単純だと思いますが、エラーがどこにあるのかわかりません。
なにか提案を?