一、问题代码

#include "widget.h"
#include "ui_widget.h"
#include <QMenuBar>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
resize(600,400);
//use of undeclared identifier 'menuBar'
QMenuBar* pMenuBar = menuBar();
}
Widget::~Widget()
{
delete ui;
}
二、原因
只有在继承了
QMainWindow的窗体,才会有this->menuBar()->addMenu();以及this->addToolBar()函数。继承QWidget是不行的。
三、解决办法
改继承为QMainWindow的工程。
在使用Qt编程时,尝试从QWidget类中访问menuBar()函数导致编译错误。问题在于,menuBar()方法仅在QMainWindow的子类中可用。为解决此问题,需将项目中的窗口类改为继承自QMainWindow,这样就可以正确地使用menuBar()和addToolBar()等函数了。

2748

被折叠的 条评论
为什么被折叠?



