QStacked Widget
の選択に応じて、適切なユーザー インターフェイスを適切に表示する方法はQListWidget
?
以下に、QDialog
次を含むがあります。
1 QListWidget
1 QStackedWidget
Vessel Position System や Output など、選択したリストの選択に応じて、インターフェイスは次のようになりますが、残念ながらQStacked Widget
現在、QWidgets
選択した が変更されておらQListWidgets
ず、実際には何も表示されていません。最小限の検証可能な例は、ここにあります。それを複製するだけで動作します:
コードの下:
optionsdialog.h
#include <QDialog>
#include "vesselpossystemwidget.h"
#include "outputdialog.h"
#include "sonarsystem.h"
namespace Ui {
class OptionsDialog;
}
class OptionsDialog : public QDialog
{
Q_OBJECT
public:
explicit OptionsDialog(QWidget *parent = nullptr);
~OptionsDialog();
private:
Ui::OptionsDialog *ui;
VesselPosSystemWidget *mVesPos;
OutputDialog *mOutput;
SonarSystem *mSonar;
};
#endif // OPTIONSDIALOG_H
optionsdialog.h
#include "optionsdialog.h"
#include "ui_optionsdialog.h"
OptionsDialog::OptionsDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::OptionsDialog)
{
ui->setupUi(this);
switch(ui->stackedWidget->currentIndex()){
case 0:
// Go to positioning system
mVesPos = new VesselPosSystemWidget();
mVesPos->show();
break;
case 1:
// Go to sonar set up...
mSonar = new SonarSystem();
mSonar->show();
break;
case 2:
// Go to output
mOutput = new OutputDialog();
mOutput->show();
break;
default:
break;
}
}
OptionsDialog::~OptionsDialog()
{
delete ui;
}
容器poswidget.h
#include <QWidget>
QT_BEGIN_NAMESPACE
namespace Ui { class VesselPosSystemWidget; }
QT_END_NAMESPACE
class VesselPosSystemWidget : public QWidget
{
Q_OBJECT
public:
VesselPosSystemWidget(QWidget *parent = nullptr);
~VesselPosSystemWidget();
private:
Ui::VesselPosSystemWidget *ui;
};
#endif // VESSELPOSSYSTEMWIDGET_H
容器poswidget.cpp
#include "vesselpossystemwidget.h"
#include "ui_vesselpossystemwidget.h"
VesselPosSystemWidget::VesselPosSystemWidget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::VesselPosSystemWidget)
{
ui->setupUi(this);
}
VesselPosSystemWidget::~VesselPosSystemWidget()
{
delete ui;
}
output.h
#include <QDialog>
namespace Ui {
class OutputDialog;
}
class OutputDialog : public QDialog
{
Q_OBJECT
public:
explicit OutputDialog(QWidget *parent = nullptr);
~OutputDialog();
private:
Ui::OutputDialog *ui;
};
#endif // OUTPUTDIALOG_H
出力.cpp
#include "outputdialog.h"
#include "ui_outputdialog.h"
OutputDialog::OutputDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::OutputDialog)
{
ui->setupUi(this);
}
OutputDialog::~OutputDialog()
{
delete ui;
}
私がこれまでに行ったこと:
私は aQStacked Widget
にあまり詳しくなく、基本的な例で練習したかったので、 a を使用する可能性を探っています。私はこの情報源とこれも調査していました
また、同じソースから、私が読んだドキュメントがさらにあります。ただし、この特定のウィジェットの使用法を完全に理解することはできませんでした。
それに加えて、switch - case
上記のコードで示したようにループを試みましたが、なぜ機能しなかったのかわかりません
QStacked Widget
の選択に応じて、適切なユーザーインターフェイスを適切に表示する方法について、誰かがガイダンスを提供してもらえますQListWidget
か? この問題を解決するための方向性は高く評価されます。