QMainWindow

Posted sunshine-gzw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QMainWindow相关的知识,希望对你有一定的参考价值。

mainwindow.h:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
class MainWindow : public QMainWindow
{
    Q_OBJECT
public slots:
    void foo();
public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();
private:
    void QMenBar_init();
    void ToolBar_init();
    void DockWidget_init();//停靠窗口
    QAction *_open;
    QAction *_save;
    QAction *_exit;

    };

#endif // MAINWINDOW_H

mainwindow.cpp:

#include "mainwindow.h"
#include<QMenuBar>
#include<QMenu>
#include<QDebug>
#include<QToolBar>
#include<QStatusBar>
#include<QTextEdit>//多行文本
#include<QDockWidget>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    QTextEdit *qtext=new QTextEdit(this);
 this->resize(600,480);
 QMenBar_init();
 ToolBar_init();
DockWidget_init();
 //this->statusBar();//状态栏,只能一个
  this->statusBar()->showMessage("就绪");
  //this->statusBar()->showMessage("就绪",5);//5秒后消失
 //this->statusBar()和this->menuBar()只需要调用就可以了,没必要用直至保存。
this->setCentralWidget(qtext);//设置中央窗口

}

 void MainWindow::DockWidget_init()
 {
     QTextEdit *qtext=new QTextEdit(this);
     QDockWidget *qd=new QDockWidget(this);
     this->addDockWidget(Qt::LeftDockWidgetArea,qd); //添加停靠窗口
     qd->setWidget(qtext);//窗口里面的类型,不固定
 }

void MainWindow::ToolBar_init()
{
QToolBar *  tb=this->addToolBar("a");//menuBar()只能添加一个,但是toolbar可以添加多个
//tb->addAction(QIcon("C:/Users/admin/Desktop/QT_Project/untitled/4.png"),"打开");
//tb->addAction(QIcon("C:/Users/admin/Desktop/QT_Project/untitled/2.png"),"保存");
//tb->addAction(QIcon("C:/Users/admin/Desktop/QT_Project/untitled/3.png"),"取消",this,SLOT(close()));
//共用堆区,节省内存
tb->addAction(_open);
tb->addAction(_save);
tb->addAction(_exit);
}



void MainWindow::QMenBar_init()
{
QMenuBar * qm =this->menuBar();
QMenu * wen_jian  = new QMenu("文件(&F)",qm); //快捷方式"Alt+F"
QMenu*bian_ji   = new QMenu("编辑(&E)",qm);
QMenu * gou_jian= new QMenu("构建(&B)",qm);
QMenu* tiao_shi = new QMenu("调试(&D)",qm);
_open= wen_jian->addAction(QIcon("C:/Users/admin/Desktop/QT_Project/untitled/4.png"),"打开");
_save=wen_jian->addAction(QIcon("C:/Users/admin/Desktop/QT_Project/untitled/2.png"),"保存");
_exit=wen_jian->addAction(QIcon("C:/Users/admin/Desktop/QT_Project/untitled/3.png"),"取消",this,SLOT(close()));


wen_jian->addAction("新建文件或项目(N...)",this,SLOT(foo()),QKeySequence("Ctrl+N"));
wen_jian->addSeparator(); //添加分割线
QMenu* zui_file=wen_jian->addMenu("最近访问的文件(F)");
zui_file->addAction(" ");
zui_file->addSeparator();
zui_file->addAction("清除菜单");

bian_ji->addAction(QIcon("C:/Users/admin/Desktop/QT_Project/untitled/1.png"),"Undo");
tiao_shi->addAction("default")->setCheckable(true);


qm->addMenu(wen_jian);
qm->addMenu(bian_ji);
qm->addMenu(gou_jian);
qm->addMenu(tiao_shi);
}
void MainWindow::foo()
{
    qDebug()<<"打开成功"<<endl;
}
MainWindow::~MainWindow()
{

}

main.cpp:

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}

效果:

技术图片

 

以上是关于QMainWindow的主要内容,如果未能解决你的问题,请参考以下文章

中心子 QMainWindow 相对于父 QMainWindow

QT:在其他窗口中显示QMainWindow

在 Pyqt4 中用不同的 QMainWindow 刷新 QMainWindow

QMainWindow::keyReleaseEvent 未按预期工作

从ABC和QMainWindow继承的抽象类[重复]

QMainWindow::separator