Добрый вечер,Widget не показан в QMainWindow
цель состоит в том, чтобы иметь MainWindow (созданный без конструктора, но кодирования) с тремя секциями рядом друг с другом:
- список точек данных (вектор)
- статистические данные о точках данных
- графическое резюме (гистограмма) данных
Я начал создавать свой собственный виджет, рисую диаграмму (только строка для целей тестирования до сих пор). Однако, пока отображается виджет таблицы, отображается «Диаграмма» виджет (экземпляр класса гистограмма) не отображается (должен быть третий вертикальный столбец).
Очень похожая проблема в Stackoverflow дала мне какое-то направление. Но пока это помогло мне отобразить виджет со столом, я не понял, как показать свой пользовательский виджет.
post: widgets not shown in qt main window
Я также проверил литературу (Саммерфильд и Qt4 Hui Entwicklung мит 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();
Я был в состоянии создать отдельный виджет с тестовой диаграммы. (удалена родительская информация и называется диаграммной> показать())
спасибо. Это решение. Я думал, что он имеет размер, поскольку он имеет один, когда он отображается как отдельный виджет. Очевидно, я не смог копать глубже в этом направлении. Еще раз спасибо. – RogerWilco77