gpt4 book ai didi

c++ - Qt 小部件未显示在主窗口中

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:12:29 25 4
gpt4 key购买 nike

我正在尝试创建主应用程序窗口。它应该有一个菜单栏,并在下面显示一个带有分隔符的标签。我的主窗口代码如下。

我遇到的问题是菜单栏显示但标签和拆分器不显示。到目前为止我尝试过的事情:1. 将拆分器的父级设置为“this”-> 拆分器显示,但绘制在菜单栏上并且很小。2. 将标签的父级设置为“this”-> 标签显示,但绘制在菜单栏上。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();

最佳答案

我刚刚遇到了完全相同的问题。我不知道是什么原因造成的,但是从 QWidget 而不是 QMainWindow 继承似乎已经修复了它。

关于c++ - Qt 小部件未显示在主窗口中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9798358/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com