我有一个困难的时间添加菜单栏,菜单和子菜单到Qt QMainWindow编程。
下面的代码会产生错误:
QWidget::设置布局:试图在QMainWindow“"上设置QLayout“”,该窗口已有布局
注:*.主窗口出来没有任何菜单或布局(空!)
#include <QApplication>
#include <QApplication>
#include<QSlider>
#include<QSpinBox>
#include<QHBoxLayout>
#include<QWidget>
#include "mainwindow.h"
#include<QMenuBar>
#include<QStatusBar>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QMenuBar *menu = new QMenuBar;
QMenu *file = new QMenu();
file->addMenu("&File");
menu->addMenu(file);
QSlider *s1 = new QSlider(Qt::Horizontal);
QSlider *s2 = new QSlider(Qt::Vertical);
QSpinBox *sb = new QSpinBox;
QHBoxLayout *L = new QHBoxLayout;
L->addWidget(s1);
L->addWidget(s2);
L->addWidget(sb);
QMainWindow *w = new QMainWindow;
w->setLayout(L);
w->show();
return a.exec();
}
5条答案
按热度按时间4nkexdtk1#
每个
QMainWindow
都应该有一个中心小部件:bvn4nwqk2#
添加布局到中央窗口小部件:
nukf8bse3#
这是最终版本
rqdpfwrv4#
为了试图清楚地回答标题所暗示的问题(它本身不是一个问题),
QMainWindow
在默认情况下已经有了一个空的菜单栏,除了像中心小部件这样的东西。要访问这个
QMenuBar
并用您选择的内容填充它,只需从您的QMainWindow
示例调用menuBar()
。要向QMenuBar
添加子菜单,请使用QMenuBar::addMenu
。例如:
For more information, look at this Qt example : https://doc.qt.io/qt-5/qtwidgets-mainwindows-menus-example.html and also the
QMenuBar
reference https://doc.qt.io/qt-5/qmenubar.html#details62o28rlo5#
我知道这是一个古老的职位,但答案是不必要的复杂
基本Qt Widget应用程序
加