我目前正在使用Qt框架编写C ++应用程序,其中“主窗口”继承自QWidget
类:
class Draughts : public QWidget
{
Q_OBJECT
public:
explicit Draughts(QWidget *parent = 0);
~Draughts();
private:
Ui::Draughts *ui;
};
我尝试使用以下代码向应用程序添加一个简单的菜单栏:
Draughts::Draughts(QWidget *parent) :
QWidget(parent),
ui(new Ui::Draughts)
{
ui->setupUi(this);
QWidget *menuWidget = new QWidget;
QMenu *menuGame = new QMenu("Game");
menuGame->addAction("New");
menuGame->addAction("Exit");
QMenu *menuHelp = new QMenu("Help");
menuHelp->addAction("How to Play...");
menuHelp->addAction("About");
//Setup the Application Menu
QMenuBar mainMenu(this);
mainMenu.addMenu(menuGame);
mainMenu.addMenu(menuHelp);
}
我的应用程序是否应该使用QMainWindow
类而不是QWidget
类?
答案 0 :(得分:3)
使用QMainWindow
会更容易,因为它提供了方便的menuBar()
方法:
QMenuBar* mainMenu = this->menuBar();
但是可以将其添加到QWidget
,就像任何其他小部件一样。只是不要在本地范围内分配它,因为它将在函数完成后删除。相反,与其他小部件一样:
QMenuBar mainMenu = new QMenuBar(this);
您还应该为窗口小部件添加布局,并将菜单添加到布局中,以便更好地控制窗体的显示位置。您可能会发现this tutorial有用。