メインアプリケーションウィンドウを作成しようとしています。メニューバーがあり、その下にスプリッター付きのラベルが1つ表示されています。メインウィンドウのコードは以下の通りです。Qtウィジェットがメインウィンドウに表示されない
メニューバーには表示されているが、ラベルとスプリッターでは表示されないという問題があります。これまでに試したこと: 1.スプリッタの親を "this" - > splitter showに設定しますが、メニューバーの上に描画され、小さいです。 2.ラベルの親を "this" - > labelに設定しますが、メニューバーに描画されます。 3.スプリッタ、親、ラベル - >ラベルが表示されないため、親を "this"に設定してください。メニューバーの下に描かれたスリッパのミニチュア版が表示されます。 4.コードラインの再整理を試み、メニューバーの上に描画された大きなスプリッタ、メニューバーの下にある小さなスプリッタ、メニューバーだけなど、何も役立たないなど、さまざまな結果が得られました。
縦型レイアウトのように見えますが、完全に無視されます。
他に何を試してもわかりません。助言がありますか?
MyWindow::MyWindow(IViewSignalHandler* signalHandler, QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags)
{
m_signalHandler = signalHandler;
// menu
m_fileMenu = new QMenu(tr("&File"));
m_fileMenu->addAction(tr("&Open"), this, SLOT(slot_OpenFile(bool)));
m_helpMenu = new QMenu(tr("&Help"));
m_helpMenu->addAction(tr("&About"), this, SLOT(slot_ShowAboutBox(bool)));
menuBar()->addMenu(m_fileMenu);
menuBar()->addMenu(m_helpMenu);
// graph
m_graphWidget = new QwtPlot();
m_graphLegend = new QwtLegend();
m_graphLegend->setItemMode(QwtLegend::CheckableItem);
m_graphWidget->insertLegend(m_graphLegend, QwtPlot::RightLegend);
m_graphWidget->setAxisTitle(QwtPlot::xBottom, tr("X"));
m_graphWidget->setAxisScale(QwtPlot::xBottom, DEFAULT_X_MIN, DEFAULT_X_MAX);
m_graphWidget->setAxisTitle(QwtPlot::yLeft, tr("Y"));
m_graphWidget->setAxisScale(QwtPlot::yLeft, DEFAULT_Y_MIN, DEFAULT_Y_MAX);
QwtPlotZoomer* zoomer = new QwtPlotZoomer(m_graphWidget->canvas());
zoomer->setTrackerMode(QwtPlotZoomer::AlwaysOn);
zoomer->setMousePattern(QwtEventPattern::MouseSelect2, Qt::RightButton, Qt::ControlModifier);
zoomer->setMousePattern(QwtEventPattern::MouseSelect3, Qt::RightButton);
// path label
m_label= new QLabel();
m_label->setTextFormat(Qt::RichText);
m_label->setWordWrap(false);
m_label->setText(tr("<b>Label: </b>"));
// splitter
m_splitter = new QSplitter();
m_splitter->setChildrenCollapsible(true);
m_list = new QListWidget();
m_splitter->addWidget(m_list);
m_tree = new QTreeWidget();
m_splitter->addWidget(m_tree);
m_text = new QTextEdit();
m_splitter->addWidget(m_text);
m_splitter->addWidget(m_graphWidget);
// page layout
QVBoxLayout *pageLayout = new QVBoxLayout(this);
pageLayout->addWidget(m_label);
pageLayout->addWidget(m_splitter);
setLayout(pageLayout);
}
[...]
m_mainWindow = new MyWindow(this);
m_mainWindow->show();
私は様々な組み合わせでそれを試しましたが、クッキーはありませんでした。例えば、上記のコンストラクタの最後の行として 'this-> setCentralWidget(pageLayout-> widget());'を追加すると、メニューバーの上にミニスプリッタが描画されます。 –
'this-> setCentralWidget(m_splitter);'を試してみるともっと良く見えます。 ' - 次に、ウィンドウのサイズを変更する大きなスプリッタを持つ素敵なメニューバーを取得します。ただし、この方法ではメニューの間にあるはずのラベルを使用しますバーとスプリッター(理由は私がそこに垂直レイアウトを持っている理由)。 –
'QMainWindow'から' QDialog'に切り替えると、すべて正常に動作します。 –