基于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系统生成的不太一样。
代码和图片的资源文件
相关文章推荐
- 70 Climbing Stairs
- 【问题及解决】Elasticsearch--Failed to deserialize exception response from stream
- UVA_10651_PebbleSolitaire
- 读Avoiding the Disk Bottleneck in the Data Domain Deduplication File System
- 如何自定义WPF项目的Main函数
- 关于NSString的retainCount的各种结果原因
- HDU 1401 Solitaire (双向搜索)
- hdu2473 Junk-Mail Filter 并查集+删除节点+路径压缩
- [Linux 运维 -- 存储] RAID入门
- HDU 2457 DNA repair (AC自动机 + DP)
- 游戏人工智能 状态驱动智能体设计——有限状态机(FSM)
- Fiddler [Fiddler] Connection to localhost. failed.
- HDU 4720 Naive and Silly Muggles
- Fiddler [Fiddler] Connection to localhost. failed.
- 使用AIDL实现进程间的通信
- 1079. Total Sales of Supply Chain (25)
- sleep()和wait()线程控制方法的区别
- NSBundle的使用,注意mainBundle和Custom Bundle的区别
- HDU1023 Train Problem II【Catalan数】
- Error Domain=NSCocoaErrorDomain Code=3000 "未找到应用程序的“aps-environment”的权利字符串"...