加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 07:29:32 所属栏目:百科 来源:网络整理
导读:我正在尝试创建主应用程序窗口.它应该有一个菜单栏,并在下面显示一个带分割器的标签.我的主窗口代码如下. 我遇到的问题是菜单栏显示,但标签和拆分器没有.到目前为止我尝试的事情: 1.将拆分器的父级设置为“this” – 拆分器显示,但是在菜单栏上绘制并且很小
我正在尝试创建主应用程序窗口.它应该有一个菜单栏,并在下面显示一个带分割器的标签.我的主窗口代码如下.

我遇到的问题是菜单栏显示,但标签和拆分器没有.到目前为止我尝试的事情:
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似乎已经修复了它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读