您的位置:首页 > 编程语言 > Qt开发

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

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

[code]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

[code]@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中的窗口的菜单栏不会被其他手动添加的控件给覆盖了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: