0

晚上好,

目的是有一个主窗口(没有 Designer 而是通过编码创建),三个部分彼此相邻:

  1. 数据点列表(向量)
  2. 数据点统计
  3. 数据的图形摘要(直方图)

我已经开始创建自己的小部件并绘制图表(到目前为止只是一条用于测试目的的线)。但是,虽然显示了 tableview 小部件,但未显示“图表”小部件(类histogram的实例)(应该是第三个垂直列)。

Stackoverflow 中一个非常相似的问题给了我一些方向。但是,虽然它帮助我用表格显示小部件,但我不知道如何显示我的自定义小部件。

帖子:小部件未显示在 qt 主窗口中

我还查阅了文献(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())

4

1 回答 1

0

只需设置最小尺寸(QWidget::setMinimumSize()):

diagram->setMinimumSize(100, 100);

可以通过其大小策略来实现对小部件大小的更多控制。

于 2014-10-05T18:19:59.450 回答