こんばんは、
目的は、3 つのセクションが隣り合ったメインウィンドウ (Designer を使用せずにコーディングによって作成) を作成することです。
- データポイントのリスト (ベクトル)
- データポイントに関する統計
- データのグラフィカルな要約 (ヒストグラム)
私は独自のウィジェットを作成して図を描き始めました(これまでのところテスト目的のための線だけです)。ただし、tableview ウィジェットが表示されている間、「図」ウィジェット (クラスhistogramのインスタンス) は表示されません (3 番目の垂直列である必要があります)。
Stackoverflow での非常によく似た問題が、私に方向性を与えてくれました。しかし、テーブルでウィジェットを表示するのに役立ちましたが、カスタム ウィジェットを表示する方法がわかりませんでした。
投稿: qt メイン ウィンドウにウィジェットが表示されない
文献 (Jürgen Wolff による Summerfield および Qt4 Hui Entwicklung mit C++) も確認しましたが、中央のウィジェットが 1 つしかない例しかありません。
#include "mainwindow.h"
#include <QApplication>
#include <QDebug>
MainWindow::MainWindow(QMainWindow *parent, Qt::WindowFlags flags) : QMainWindow(parent, flags)
{
mainWidget = new QWidget(this);
setCentralWidget(mainWidget);
tableWidget = new QTableWidget(mainWidget); // QTableWidget to display the data vector
//...
// here comes code to fill the table...
//...
// result labels
lbl_sampleSize = new QLabel("sample size");
lbl_meanValue = new QLabel("mean");
lbl_sigma = new QLabel("sigma");
lbl_andersonDarling = new QLabel("Anderson Darling");
lbl_pValue = new QLabel("p-value for Anderson-Darling");
rightLayout = new QVBoxLayout(); // a vertical layout to contain labels
rightLayout->addWidget(lbl_sampleSize);
rightLayout->addWidget(lbl_meanValue);
rightLayout->addWidget(lbl_sigma);
rightLayout->addWidget(lbl_andersonDarling);
rightLayout->addWidget(lbl_pValue);
rightLayout->addStretch();
//diagram
diagram = new Histogram(mainWidget);
mainLayout = new QHBoxLayout(mainWidget);
mainLayout->addWidget(tableWidget,0);
mainLayout->addLayout(rightLayout,0);
mainLayout->addWidget(diagram, 0);
//mainWidget->setLayout(mainLayout);
}
スクリーンショット:
備考: このコードで
//diagram
diagram = new Histogram();
mainLayout = new QHBoxLayout(mainWidget);
mainLayout->addWidget(tableWidget,0);
mainLayout->addLayout(rightLayout,0);
//mainLayout->addWidget(diagram, 0);
//mainWidget->setLayout(mainLayout);
diagram->show();
テスト ダイアグラムを使用して別のウィジェットを作成できました。(親情報を削除し、diagram->show() を呼び出します)