0

こんばんは、

目的は、3 つのセクションが隣り合ったメインウィンドウ (Designer を使用せずにコーディングによって作成) を作成することです。

  1. データポイントのリスト (ベクトル)
  2. データポイントに関する統計
  3. データのグラフィカルな要約 (ヒストグラム)

私は独自のウィジェットを作成して図を描き始めました(これまでのところテスト目的のための線だけです)。ただし、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() を呼び出します)

4

1 に答える 1