QT中QMainWindow手动添加菜单栏以及其他控件

6 篇文章 12 订阅

QT中的建立一个界面为QMainwindow的主界面,如果想在主界面中手动添加MenuBar,同时再添加别的控件时,一定要定义一个QWidget的控件,把除了MenuBar之外的控件放到QWidget中,否则绘制出来的界面中控件会覆盖已有的菜单栏。举个栗子,具体代码如下:

void MainWindow::InitializeWindow()
{
    //设置窗口的图标和名称
     setWindowIcon(QIcon(":/icon.ico"));
     setWindowTitle(tr("新闻推荐系统"));

    //自定义QLabel控件
     m_lblLeft = new QLabel(tr("<b>文章关键字列表 </b>"));
     m_lblRight =new QLabel(tr("<b>关键字向量 </b>"));
     m_lblRcmd1 = new QLabel(tr("<b>推荐结果1 </b>"));
     m_lblRcmd2 = new QLabel(tr("<b>推荐结果2 </b>"));

     //主窗口中添加一个Widget,将所有控件放入Widget,其中setCentralWidget()设置该widget为当前窗口的widget
     m_widget = new QWidget();
     this->setCentralWidget(m_widget);

     //设置窗口的布局,QGridLayout中的参数分别是(控件名称,控件所在的行号,控件所在的列号)
     QGridLayout* gridLayout = new QGridLayout;
     gridLayout->addWidget(m_lblLeft,0,0);
     gridLayout->addWidget(m_lblRight,0,1);
     gridLayout->addWidget(m_lblRcmd1,2,0);
     gridLayout->addWidget(m_lblRcmd2,2,1);

     //把新建的Widget的布局设置为gridLayout
     m_widget->setLayout(gridLayout);
}

下面是初始化窗口的代码,其中新建了一个QWidget函数,同时调用setCentralWidget(QWidget* )来实现设置了QMainWindow的CentralWidget

@requires_authorization
void MainWindow::InitializeWindow()
{
    //设置窗口的图标和名称
     setWindowIcon(QIcon(":/icon.ico"));
     setWindowTitle(tr("新闻推荐系统"));

    //自定义QLabel控件
     m_lblLeft = new QLabel(tr("<b>文章关键字列表 </b>"));
     m_lblRight =new QLabel(tr("<b>关键字向量 </b>"));
     m_lblRcmd1 = new QLabel(tr("<b>推荐结果1 </b>"));
     m_lblRcmd2 = new QLabel(tr("<b>推荐结果2 </b>"));

     //主窗口中添加一个Widget,将所有控件放入Widget,其中setCentralWidget()设置该widget为当前窗口的widget
     m_widget = new QWidget();
     this->setCentralWidget(m_widget);

     //设置窗口的布局,QGridLayout中的参数分别是(控件名称,控件所在的行号,控件所在的列号)
     QGridLayout* gridLayout = new QGridLayout;
     gridLayout->addWidget(m_lblLeft,0,0);
     gridLayout->addWidget(m_lblRight,0,1);
     gridLayout->addWidget(m_lblRcmd1,2,0);
     gridLayout->addWidget(m_lblRcmd2,2,1);

     //把新建的Widget的布局设置为gridLayout
     m_widget->setLayout(gridLayout);
}

完成以上两步的设置,QMainWindow中的窗口的菜单栏不会被其他手动添加的控件给覆盖了

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 下面是一个使用 Qt 和 C++ 编写带菜单栏界面的示例代码: ``` #include <QApplication> #include <QMainWindow> #include <QMenuBar> #include <QMenu> #include <QAction> int main(int argc, char *argv[]) { QApplication a(argc, argv); QMainWindow window; QMenuBar *menuBar = window.menuBar(); QMenu *fileMenu = menuBar->addMenu("文件"); QAction *openAction = fileMenu->addAction("打开"); window.show(); return a.exec(); } ``` 该代码创建了一个带菜单栏的主窗口,并在菜单栏添加了一个名为“文件”的菜单,该菜单包含一个名为“打开”的操作。 ### 回答2: 要编写带菜单栏的界面代码,我们可以使用Qt和C++进行开发。 首先,我们需要创建一个Qt应用程序项目,并打开Qt的集成开发环境。在Qt的主界面,选择"新建项目",然后选择"Qt Widgets应用程序",输入项目的名称,并选择所需的配置和路径。 在项目,我们需要创建一个新的主窗口类。首先,我们需要包含所需的头文件,如QMainWindow和QMenuBar。然后,我们需要创建一个继承自QMainWindow的新的类,我们可以将其命名为MainWindow。在MainWindow类的构造函数,我们需要设置窗口的标题和大小,并创建一个菜单栏。 为了创建菜单栏,我们需要创建一个QMenuBar对象,并将其设置为MainWindow菜单栏。然后,我们可以使用addMenu方法来添加菜单。每个菜单可以使用QMenu类来创建。在每个菜单,我们可以使用addAction方法来添加动作。每个动作都可以使用QAction类来创建。 在每个动作,我们可以设置动作的名称和快捷键,还可以连接到一个槽函数。槽函数可以是MainWindow的一个公共槽函数,也可以是其他类的槽函数。 在MainWindow,我们可以添加其他所需的功能,如按钮、文本框等。我们可以使用Qt提供的各种控件类来创建这些功能。 最后,我们需要在main函数创建一个MainWindow对象,并显示窗口。我们可以使用show方法来显示窗口,并使用exec方法进入Qt的主事件循环。 总结来说,使用Qt和C++编写带菜单栏的界面代码,我们需要创建一个继承自QMainWindow的主窗口类,并使用QMenuBar、QMenu和QAction来创建菜单栏菜单项。然后,我们可以在菜单项上设置动作和槽函数。最后,我们需要在main函数创建窗口对象,并显示窗口。以上是简要的代码框架,具体的实现可能需要更多的代码和细节。 ### 回答3: Qt是一款跨平台的框架,可以用来开发图形化界面。而C++是一种编程语言,也可以用来编写图形界面的代码。 要编写带菜单栏的界面代码,首先需要创建一个窗口。可以使用Qt的QMainWindow类来创建主窗口。然后,可以使用QMenuBar类来添加一个菜单栏。以下是一个示例代码: ```cpp #include <QtWidgets> int main(int argc, char *argv[]) { QApplication app(argc, argv); QMainWindow window; window.setWindowTitle("带菜单栏的界面"); QMenuBar* menuBar = window.menuBar(); QMenu* fileMenu = menuBar->addMenu("文件"); QAction* openAction = fileMenu->addAction("打开"); QAction* saveAction = fileMenu->addAction("保存"); QAction* exitAction = fileMenu->addAction("退出"); QObject::connect(exitAction, &QAction::triggered, &app, &QApplication::quit); window.show(); return app.exec(); } ``` 以上代码首先创建了一个QMainWindow类的实例,然后调用setWindowTitle方法设置了窗口的标题。 接下来,在窗口的菜单栏添加了一个名为"文件"的菜单,然后在该菜单添加了"打开"、"保存"和"退出"三个动作。 最后使用连接(connect)的方式,将退出动作的触发(triggered)信号连接到QApplication实例的quit()方法上,这样当用户点击退出动作时,应用程序会退出。 最后,通过调用show方法显示窗口,并通过调用app.exec()方法来启动应用程序的事件循环。 以上就是一个简单的Qt和C++编写带菜单栏的界面代码的示例。在实际的应用,还可以添加更多的菜单和动作,并根据需要进行逻辑处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值