MainWindow.h

  1. #ifndef MAINWINDOW_H
  2. #define MAINWINDOW_H
  3.  
  4. #include<QMainWindow>
  5. #include<QMessageBox>
  6.  
  7. class MainWindow : public QMainWindow{
  8. Q_OBJECT
  9. public:
  10. MainWindow();
  11.  
  12. private slots:
  13. void fExit();
  14. void iInfo();
  15.  
  16. private:
  17. void createMenus();
  18. void createActions();
  19.  
  20. QAction *exit;
  21. QAction *info;
  22. QMenu *file;
  23. QMenu *about;
  24. QMessageBox *msgBox;
  25. };
  26.  
  27. #endif // MAINWINDOW_H

MainWindow.cpp

  1. #include<QtGui>
  2. #include"MainWindow.h"
  3.  
  4. MainWindow::MainWindow(){
  5. QWidget *widget=new QWidget;
  6. setCentralWidget(widget);
  7.  
  8. QWidget *topfiller=new QWidget;
  9. topfiller->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);
  10.  
  11. QWidget *bottomFiller=new QWidget;
  12. bottomFiller->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);
  13.  
  14. createActions();
  15. createMenus();
  16.  
  17. QVBoxLayout *layout=new QVBoxLayout;
  18. layout->addWidget(topfiller);
  19. layout->addWidget(bottomFiller);
  20. widget->setLayout(layout);
  21.  
  22. setWindowTitle(tr("Main Window"));
  23. resize(512,480);
  24.  
  25. }
  26.  
  27. void MainWindow::createActions(){
  28. exit=new QAction(tr("Exit"),this);
  29. exit->setShortcut(QKeySequence::Close);
  30. connect(exit,SIGNAL(triggered()),this,SLOT(fExit()));
  31.  
  32. info =new QAction(tr("Info"),this);
  33. info->setShortcut(QKeySequence::HelpContents);
  34. connect(info,SIGNAL(triggered()),this,SLOT(iInfo()));
  35.  
  36. }
  37.  
  38. void MainWindow::createMenus(){
  39. file=menuBar()->addMenu(tr("File"));
  40. file->addAction(exit);
  41.  
  42. about=menuBar()->addMenu(tr("About"));
  43. about->addAction(info);
  44. }
  45.  
  46. void MainWindow::fExit(){
  47. MainWindow::close();
  48. }
  49.  
  50. void MainWindow::iInfo(){
  51. msgBox=new QMessageBox;
  52. msgBox->setText(tr("hello world"));
  53. msgBox->setIcon(QMessageBox::Question);
  54. msgBox->setStandardButtons(QMessageBox::Ok);
  55. msgBox->exec();
  56. }

Main.cpp

  1. #include<QApplication>
  2. #include"MainWindow.h"
  3.  
  4. int main(int argc,char* argv[]){
  5. QApplication app(argc,argv);
  6. MainWindow wnd;
  7. wnd.show();
  8. app.exec();
  9.  
  10. }

运行效果:

QT 菜单程序的更多相关文章

  1. macOS平台下Qt应用程序菜单翻译及调整

    一.翻译 在macOS平台上,系统会为应用程序菜单添加一些额外的菜单项.先来看一些典型的例子: 这个是Qt Creator的菜单,系统为应用程序菜单添加了一些桌面显示操作相关的菜单项: 这个是Qt D ...

  2. 让你的 Qt 桌面程序看上去更加 native(一共六篇)

    <让你的 Qt 桌面程序看上去更加 native>是一个系列文章.在这个系列中,你将会了解到如何让你的 Qt 桌面应用程序看上去更加 native.这里,我假设你已经清楚如何使用 Qt 编 ...

  3. Qt应用程序的打包

    Windows系统下打包: qt用realse版本编译然后打包发行 debug编译后的文件比realse版本大很多先在编译好的debug或者realse执行程序的目录下将执行该城西对应的所有dell文 ...

  4. Qt应用程序图标设置

    Qt应用程序图标设置 本文仅仅适用于windows下,linux等不适用. 下面说的图标,指的是程序文件的图标,而不是托盘图标或者说运行时任务栏的图标(任务栏和程序窗口的图标在windows/linu ...

  5. 报表控件NCReport教程:集成NCReport到Qt应用程序中

    NCReport是一款轻量级.快速.多平台.简单易用的基于Qt toolkit的C++编写的报表解决方案,目前主要包括报表渲染库和报表设计器GUI应用程序. 但是好多使用NCReport控件的朋友都不 ...

  6. QT添加程序图标及窗口图标

    程序图标 材料准备 图标文件:*.ico文件,存放在源文件同一目录下,如"myapp.ico" 写入图标 向*.pro文件中,独立一行写入"RC_ICONS = *.ic ...

  7. Ubuntu下QT控制台程序无法运行的解决方案以及XTerm的配置方法

    Ubuntu下QT控制台程序无法运行的解决方案以及XTerm的配置方法 最近由于老师要求要在Ubuntu下QT上进程多线程服务器的开发,虽然只是单纯的调用qt的network模块,但是为了避免麻烦,我 ...

  8. Linux下Qt应用程序的发布(使用LDD命令查看所有依赖的库文件)

    最近一直在学习Qt,用Qt写了一个程序,但是不知道怎么发布,网上说的都是在windows下怎么发布Qt应用程序,但是,在windows下Qt应用程序依赖的库文件与linux下的名字不同.于是,我就想到 ...

  9. 让qt应用程序支持触摸

    一.设备驱动 我的触摸屏是usb接口的 可以参考下这2篇文件 http://blog.csdn.net/paomadi/article/details/8754783 usb触摸屏 http://bl ...

随机推荐

  1. C#秘密武器之扩展方法

    原文:C#秘密武器之扩展方法 为何要用扩展方法? 作为一个.NET程序猿,我们经常要跟.net自带类库或者第三方dll类库打交道,有时候我们未必能够通过反编译来查看它们的代码,但是我们通常需要给它们扩 ...

  2. PHP 1:在Windows上安装和配置PHP,Apache和My SQL

    原文:PHP 1:在Windows上安装和配置PHP,Apache和My SQL 如果你Google一把类似的主题,你会发现相关的文章可以塞满你的硬盘.在这里之所以把它再次拿出来,目的是想记录我作为一 ...

  3. 【 D3.js 进阶系列 — 5.0 】 直方图

    直方图用于描写叙述概率分布,D3 提供了直方图的布局 Histogram 用于转换数据. 假设有数组 a = [10, 11, 11.5, 12.5, 13, 15, 19, 20 ],如今把10~2 ...

  4. Android项目----dispathTouchEvent

    说到dispathTouchEvent,就不得不说一个最贱的屏幕触摸动作触发的一些列Touch事件: ACTION_DOWN->ACTION_MOVE->ACTION_MOVE->A ...

  5. Linux : fedora 安装 vnc server

    Linux配置VNC服务 安装VNC服务端 #yum install vnc-server 配置VNC服务参数文件 编辑vncservers文件追加如下 #vi /etc/sysconfig/vncs ...

  6. Azure的两种关系型数据库服务:SQL Azure与SQL Server VM的不同

    Azure的两种关系型数据库服务:SQL Azure与SQL Server VM的不同 <Windows Azure Platform 系列文章目录> 如果熟悉Windows Azure平 ...

  7. linux 之 snprintf函数用法

    int snprintf(char *restrict buf, size_t n, const char * restrict  format, ...); 函数说明:最多从源串中拷贝n-1个字符到 ...

  8. [转]Data Structure Recovery using PIN and PyGraphviz

    Source:http://v0ids3curity.blogspot.com/2015/04/data-structure-recovery-using-pin-and.html --------- ...

  9. [RM 状态机详解1] RMApp状态机详解

    概述 Apache Hadoop 2.0在Hadoop 1.0基础上做了许多的重构工作,代码上的重构最大的变化在于引入状态机处理各个角色的状态与变迁,使用状态机是得代码结构更加清晰,方便异步处理各种操 ...

  10. 我的API HOOK库

    API HOOK有两种做法,一种是SetWindowHookEx,简单易用,但如果做其它的HOOK,如HOOK OpenProcess,就需要修改内存地址了,内存地址可以通过WriteProcessM ...