晚上好,
目的是让一个主窗口(没有设计师但是通过编码创建)与三个部分相邻:
我已经开始创建自己的小部件,请绘制图表(到目前为止只是一行用于测试目的)。 但是,在显示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);
}
截图:
备注: 使用此代码
//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())
答案 0 :(得分:0)
只需设置最小尺寸(QWidget::setMinimumSize()):
diagram->setMinimumSize(100, 100);
可以通过size policy来实现对小部件大小调整的更多控制。