首页 > 代码库 > QT QMianWindow类

QT QMianWindow类

QMianWindow是一个为用户提供主窗口程序的类,包含一个菜单栏(menu bar)、及一个中心部件(central widget),是许多应用程序的基础,如文本编辑器等。
QMainWindow中菜单需要QMenu类和QAction类来实现。
QAction类定义了菜单的具体行为。
QMainWindow中提供了menuBar()函数返回一个menuBar.
通过调用menuBar的addMenu函数就可以生成一个新的菜单项。
QMenu类addAction函数为菜单指定一个QAction。
QMainWindow中提供了自己的布局空间,所以不需要再为QMainWindow定义布局控件。
//mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QAction>
#include <QMenu>
#include <QMenuBar>
#include <QTextEdit>

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();
private:
    QAction *open1,*exit1;
    QMenu *menu1;
    QTextEdit *edit1;
private slots:
    void myopenfile();
    void exitmywindow();

};

#endif // MAINWINDOW_H
//mainwindow.cpp
#include "mainwindow.h"

#include <QFileDialog>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    open1=new QAction(tr("打开"),this);
    //设置快捷键
    open1->setShortcut(tr("Ctrl+O"));
    exit1=new QAction(tr("退出"),this);
    exit1->setShortcut(tr("Ctrl+Q"));
    //添加菜单
    /*
     * 详细写法
     * QMenuBar *menub1= menuBar();
     *  menub1)->addMenu(tr("文件"));*/
    menu1=menuBar()->addMenu(tr("文件"));
    //加入菜单项
    menu1->addAction(open1);
    menu1->addAction(exit1);
    edit1=new QTextEdit();
    //设置中央控件
    this->setCentralWidget(edit1);
    //点击action
    /*注意:triggered()是菜单下的点击事件,并非clicked()函数*/
    connect(open1,SIGNAL(triggered()),this,SLOT(myopenfile()));
    connect(exit1,SIGNAL(triggered()),this,SLOT(exitmywindow()));
}

MainWindow::~MainWindow()
{

}

void MainWindow::exitmywindow()
{
    this->close();
}

void MainWindow::myopenfile()
{
    QString s=QFileDialog::getOpenFileName();
}

技术分享

QT QMianWindow类