小部件未在QMainWindow中显示

时间:2014-10-04 22:44:05

标签: c++ qt qwidget qmainwindow qlayout

晚上好,

目的是让一个主窗口(没有设计师但是通过编码创建)与三个部分相邻:

  1. 数据点列表(矢量)
  2. 有关数据点的统计数据
  3. 数据的图形摘要(直方图)
  4. 我已经开始创建自己的小部件,请绘制图表(到目前为止只是一行用于测试目的)。 但是,在显示tableview小部件时,未显示“图表”小部件(类直方图的实例)(应该是第三个垂直列)。

    Stackoverflow中一个非常类似的问题给了我一些指导。虽然它帮助我用表格显示小部件,但我没有弄清楚如何显示我的自定义小部件。

    post: widgets not shown in qt main window

    我还检查过文献(Summerfield和Qt4 Hui Entwicklung mit C ++,由JürgenWolff撰写),但他们只有一个中心小部件的例子。

    #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);
    
    
    }
    

    截图: enter image description here

    备注: 使用此代码

    //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();
    

    我能够使用测试图创建一个单独的Widget。 (删除了父信息并调用了diagram-&gt; show())

1 个答案:

答案 0 :(得分:0)

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

diagram->setMinimumSize(100, 100);

可以通过size policy来实现对小部件大小调整的更多控制。