您的位置:首页 > 大数据 > 人工智能

基于QMainWindow的主窗口程序例子

2015-08-17 15:28 295 查看

基于QMainWindow的主窗口程序例子

1、打开Qt Creator,创建工程mainwindow

2、添加C++头文件mainwindow.h和C++源文件mainwindow.cpp

mainwindow.h代码如下:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

class QAction;
class QMenu;
class QToolBar;
class QTextEdit;

class MainWindow : public QMainWindow
{
Q_OBJECT

public:
MainWindow(QWidget *parent = 0);

void createMenus();
void createActions();
void createToolBars();

public slots:
void slotNewFile();
void slotOpenFile();
void slotSaveFile();
void slotCopy();
void slotCut();
void slotPaste();
void slotAbout();

private:
QMenu *fileMenu;
QMenu *editMenu;
QMenu *aboutMenu;
QToolBar *fileTool;
QToolBar *editTool;

QAction *fileOpenAction;
QAction *fileNewAction;
QAction *fileSaveAction;
QAction *exitAction;
QAction *aboutAction;

QTextEdit *text;
};

#endif // MAINWINDOW_H


mainwindow.cpp的代码如下:

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

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
{
setWindowTitle(tr("Doc"));
text = new QTextEdit(this);
//text->setTextColor(QColor().black());
setCentralWidget(text);

createActions();    //创建actions
createMenus();      //创建菜单
createToolBars();   //创建工具条
}

void MainWindow::createActions()
{
//file open action 打开文件
fileOpenAction = new QAction(QIcon(":/images/open.png"),tr("open"),this);
fileOpenAction->setShortcut(tr("Ctrl+O"));
fileOpenAction->setStatusTip(tr("open a file"));;
connect(fileOpenAction,SIGNAL(triggered()),this,SLOT(slotOpenFile()));

// file new action 新建文件
fileNewAction = new QAction(QIcon(":/images/new.png"),tr("New"),this);
fileNewAction->setShortcut(tr("Ctrl+N"));
fileNewAction->setStatusTip(tr("new file"));
connect(fileNewAction,SIGNAL(triggered()),this,SLOT(slotNewFile()));

// save file action 保存文件
fileSaveAction = new QAction(QPixmap(":/images/save.png"),tr("Save"),this);
fileSaveAction->setShortcut(tr("Ctrl+S"));
fileSaveAction->setStatusTip(tr("save file"));
connect(fileSaveAction,SIGNAL(activated()),this,SLOT(slotSaveFile()));

// exit action 退出
exitAction = new QAction(tr("Exit"), this);
exitAction->setShortcut(tr("Ctrl+Q"));
exitAction->setStatusTip(tr("exit"));
connect(exitAction, SIGNAL(triggered()), this, SLOT(close()));

//cut action  剪切
cutAction = new QAction(QIcon(":/images/cut.png"), tr("Cut"), this);
cutAction->setShortcut(tr("Ctrl+X"));
cutAction->setStatusTip(tr("cut to clipboard"));
connect(cutAction, SIGNAL(triggered()), text, SLOT(cut()));

//copy action 复制
copyAction = new QAction(QIcon(":/images/copy.png"), tr("Copy"), this);
copyAction->setShortcut(tr("Ctrl+C"));
copyAction->setStatusTip(tr("copy to clipboard"));
connect(copyAction, SIGNAL(triggered()), text, SLOT(copy()));

//paste action 粘贴
pasteAction = new QAction(QIcon(":/images/paste.png"), tr("Paste"), this);
pasteAction->setShortcut(tr("Ctrl+V"));
pasteAction->setStatusTip(tr("paste clipboard to selection"));
connect(pasteAction, SIGNAL(triggered()), text, SLOT(paste()));

//about action 关于
aboutAction = new QAction(tr("About"), this);
connect(aboutAction, SIGNAL(triggered()), this, SLOT(slotAbout()));
}

void MainWindow::createMenus()
{
//创建文件菜单
fileMenu = menuBar()->addMenu(tr("File"));
//创建编辑菜单
editMenu = menuBar()->addMenu(tr("Edit"));
//创建帮助菜单
aboutMenu = menuBar()->addMenu(tr("Help"));

//文件菜单-》新建文件
fileMenu->addAction(fileNewAction);
//文件菜单-》打开文件
fileMenu->addAction(fileOpenAction);
//文件菜单-》保存文件
fileMenu->addAction(fileSaveAction);
//文件菜单-》退出文件
fileMenu->addAction(exitAction);

//编辑菜单-》复制
editMenu->addAction(copyAction);
//编辑菜单-》剪切
editMenu->addAction(cutAction);
//编辑菜单-》粘贴
editMenu->addAction(pasteAction);

//关于菜单-》关于
aboutMenu->addAction(aboutAction);
}

void MainWindow::createToolBars()
{
//创建工具条
fileTool = addToolBar("File");
fileTool->setMovable(false);
editTool = addToolBar("Edit");

fileTool->addAction(fileNewAction);
fileTool->addAction(fileOpenAction);
fileTool->addAction(fileSaveAction);

editTool->addAction(copyAction);
editTool->addAction(cutAction);
editTool->addAction(pasteAction);
}

//槽函数
void MainWindow::slotNewFile()
{
}

void MainWindow::slotOpenFile()
{
}

void MainWindow::slotSaveFile()
{
}

void MainWindow::slotAbout()
{
}


我们并没有实现这几个槽函数,只是空的,什么也不做而已。

3、新建C++源文件main.cpp。其代码如下:

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

int main(int argc,char * argv[])
{
QApplication app(argc, argv);

MainWindow *mainwindow = new MainWindow;
mainwindow->show();

return app.exec();
}


4、新建Qt资源文件,mainwindow.qrc,把我们需要的图片文件添加进去,然后就ok了。

5、看一下最后的软件是什么样子,我是在Ubuntu下实现的,可能会和windows系统生成的不太一样。



代码和图片的资源文件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: