晚上好,
目的是有一个主窗口(没有 Designer 而是通过编码创建),三个部分彼此相邻:
- 数据点列表(向量)
- 数据点统计
- 数据的图形摘要(直方图)
我已经开始创建自己的小部件并绘制图表(到目前为止只是一条用于测试目的的线)。但是,虽然显示了 tableview 小部件,但未显示“图表”小部件(类histogram的实例)(应该是第三个垂直列)。
Stackoverflow 中一个非常相似的问题给了我一些方向。但是,虽然它帮助我用表格显示小部件,但我不知道如何显示我的自定义小部件。
我还查阅了文献(Jürgen Wolff 的 Summerfield 和 Qt4 Hui Entwicklung mit C++),但他们只有一个中央小部件的示例。
#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())