我正在尝试创建主应用程序窗口.它应该有一个菜单栏,并在下面显示一个带分割器的标签.我的主窗口代码如下.
我遇到的问题是菜单栏显示,但标签和拆分器没有.到目前为止我尝试的事情:
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"),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似乎已经修复了它.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。