当前位置:   article > 正文

QT5之windowswidget_菜单栏+工具栏_核心控件_浮动窗口_模态对话框_标准对话框/文本对话框

QT5之windowswidget_菜单栏+工具栏_核心控件_浮动窗口_模态对话框_标准对话框/文本对话框

菜单栏+工具栏

新建工程基类是QMainWindow

1、

2、

3、

点.pro文件,添加配置

因为之后用到lambda;

在.pro文件添加配置c++11

  1. CONFIG +=c++11
  2. #不能加分号

添加头文件

#include <QMenuBar>//菜单栏的头文件

主窗口代码mainwindow.cpp文件

  1. #include "mainwindow.h"
  2. #include <QMenuBar>//菜单栏的头文件
  3. #include <QMenu>//菜单的头文件
  4. #include <QAction>//动作头函数
  5. #include <QDebug>//打印头文件
  6. #include<QToolBar>//工具头文件,快捷图标工具
  7. #include<QPushButton>//添加按钮
  8. MainWindow::MainWindow(QWidget *parent)
  9. : QMainWindow(parent)
  10. {
  11. //菜单栏的文件菜单
  12. QMenuBar *mBar=menuBar();//生成一个菜单栏
  13. QMenu *pFile=mBar->addMenu("文件");//给菜单栏添加一个菜单名设置为文件;pFile就是指向这个文件菜单
  14. QAction *pnew= pFile->addAction("新建");//添加菜单项,pnew指向,新建菜单项 的动作返回值
  15. connect(pnew,&QAction::triggered,
  16. [=]()
  17. {
  18. qDebug()<<"新建被按下";
  19. }
  20. );
  21. pFile->addSeparator();//添加分割线
  22. QAction *popen =pFile->addAction("打开");//再添加一个菜单项,pFile是指向菜单名为文件
  23. //工具栏,菜单项的快捷方式;菜单栏下面的图标快捷工具
  24. QToolBar *toolBar =addToolBar("toolBar");//添加工具栏,菜单栏下面的可视化图标工具快捷键 toolBar指向菜单栏
  25. toolBar->addAction( pnew );//工具栏添加快捷键,添加了一个指向新建菜单项
  26. QPushButton *b=new QPushButton(this);//在工具栏添加一个按键
  27. b->setText("按键1");
  28. //添加小控件
  29. toolBar->addWidget(b);//添加控件为b按钮的控件
  30. connect(b,&QPushButton::clicked,
  31. [=]() //()里面可以添加信号的参数列表 clicked 发了个bool 型 那么
  32. {
  33. b->setText("123");//按一次就变名字
  34. }
  35. );
  36. resize(500,500);
  37. }
  38. MainWindow::~MainWindow()
  39. {
  40. }

结果示图

核心控件和浮动窗口和模态和非模态对话框代码

  1. #include "mainwindow.h"
  2. #include <QMenuBar>//菜单栏的头文件
  3. #include <QMenu>//菜单的头文件
  4. #include <QAction>//动作头函数
  5. #include <QDebug>//打印头文件
  6. #include<QToolBar>//工具头文件,快捷图标工具
  7. #include<QPushButton>//添加按钮
  8. #include<QStatusBar>//状态栏的头文件
  9. #include<QLabel>//标签头文件
  10. #include<QTextEdit>//文本编辑器
  11. #include<QDockWidget>//浮动窗口头文件
  12. #include<QDialog>//对话窗口
  13. MainWindow::MainWindow(QWidget *parent)
  14. : QMainWindow(parent)
  15. {
  16. //菜单栏的文件菜单
  17. QMenuBar *mBar=menuBar();//生成一个菜单栏
  18. QMenu *pFile=mBar->addMenu("文件");//给菜单栏添加一个菜单名设置为文件;pFile就是指向这个文件菜单
  19. QAction *pnew= pFile->addAction("新建");//添加菜单项,pnew指向,新建菜单项 的动作返回值
  20. connect(pnew,&QAction::triggered,
  21. [=]()
  22. {
  23. qDebug()<<"新建被按下";
  24. }
  25. );
  26. pFile->addSeparator();//添加分割线
  27. QAction *popen =pFile->addAction("打开");//再添加一个菜单项,pFile是指向菜单名为文件
  28. //工具栏,菜单项的快捷方式;菜单栏下面的图标快捷工具
  29. QToolBar *toolBar =addToolBar("toolBar");//添加工具栏,菜单栏下面的可视化图标工具快捷键 toolBar指向菜单栏
  30. toolBar->addAction( pnew );//工具栏添加快捷键,添加了一个指向新建菜单项
  31. QPushButton *b=new QPushButton(this);//在工具栏添加一个按键
  32. b->setText("按键1");
  33. //添加小控件
  34. toolBar->addWidget(b);//添加控件为b按钮的控件
  35. connect(b,&QPushButton::clicked,
  36. [=]() //()里面可以添加信号的参数列表 clicked 发了个bool 型 那么
  37. {
  38. b->setText("123");//按一次就变名字
  39. }
  40. );
  41. resize(500,500);
  42. //以下是状态栏*********************
  43. QStatusBar *sBar =statusBar();//
  44. QLabel *lable = new QLabel(this);//新建一个标签
  45. lable->setText("Normal text file");//给标签一个名字
  46. sBar->addWidget(lable);//状态栏 添加一个控件
  47. //默认从左往右边添加
  48. sBar->addWidget(new QLabel("2",this)); // 状态栏添加一个控件 ,控件为2 且控件父对象是这个窗口
  49. //状态栏 添加控件,从右边往左边添加
  50. sBar->addPermanentWidget(new QLabel("3",this));
  51. //核心控件*********************************
  52. QTextEdit *textEdit =new QTextEdit(this);//文本编辑器指定父对象为this
  53. setCentralWidget(textEdit); //设计一个核心控件,为文本编辑器
  54. //浮动窗口
  55. QDockWidget *dock=new QDockWidget(this);//一个新的浮动窗口
  56. addDockWidget(Qt::RightDockWidgetArea,dock);//F1进去看填什么参数,点击参数枚举从中看到第一个参数例子
  57. //添加一个浮动窗口dock 放在右边
  58. //模态对话框,弹出的窗口,无法操作主窗口
  59. //非模态对话框,弹出的窗口,且可以操作主窗口;
  60. QMenu *menu =mBar->addMenu("对话框");
  61. QAction *p1= menu->addAction("模态对话框");
  62. connect(p1,QAction::triggered,
  63. [=]()
  64. {
  65. QDialog dlg;//一个对话框
  66. dlg.show();//显示对话框
  67. dlg.exec();//因为这个一直不退出,主窗口也不执行
  68. qDebug()<<"1111";
  69. }
  70. );
  71. QAction *p2= menu->addAction("非模态对话框");
  72. connect(p2,QAction::triggered,
  73. [=]()
  74. {
  75. //QDialog dlg;//一个对话框 这个因为会被释放,所以改成主窗口的成员在.h文件增加
  76. //或者 动态申请 对话框 QDialog *p_dlg = new QDialog(this);
  77. //动态申请 不好 如果多次进入非模块组,内存只会整个程序结束才释放。内存越来越少
  78. // QDialog *p_dlg = new QDialog(this);
  79. // p_dlg->show();
  80. // p_dlg->setAttribute(Qt::WA_DeleteOnClose,true);//F1进入,第一参,关闭的时候释放
  81. //QDialog dlg;//一个对话框 这个因为会被释放,所以改成主窗口的成员在.h文件增加
  82. dlg.show();//显示对话框
  83. // dlg.exec();//非模态不能用这个,会阻塞
  84. qDebug()<<"1111";
  85. }
  86. );
  87. }
  88. MainWindow::~MainWindow()
  89. {
  90. }

标准对话框/文本对话框

需要包含头文件#include<QMessageBox>

选中这个头可以F1进入帮助文档找到如下

void    about(QWidget * parent, const QString & title, const QString & text)

参1 父类 ,参2 标题  参3 内容文本

主代码

  1. #include "mainwindow.h"
  2. #include <QMenuBar>//菜单栏的头文件
  3. #include <QMenu>//菜单的头文件
  4. #include <QAction>//动作头函数
  5. #include <QDebug>//打印头文件
  6. #include<QToolBar>//工具头文件,快捷图标工具
  7. #include<QPushButton>//添加按钮
  8. #include<QStatusBar>//状态栏的头文件
  9. #include<QLabel>//标签头文件
  10. #include<QTextEdit>//文本编辑器
  11. #include<QDockWidget>//浮动窗口头文件
  12. #include<QDialog>//标准对话窗口头文件
  13. #include<QFileDialog>//文件对话窗口头文件
  14. #include<QMessageBox>
  15. MainWindow::MainWindow(QWidget *parent)
  16. : QMainWindow(parent)
  17. {
  18. //菜单栏的文件菜单
  19. QMenuBar *mBar=menuBar();//生成一个菜单栏
  20. QMenu *pFile=mBar->addMenu("文件");//给菜单栏添加一个菜单名设置为文件;pFile就是指向这个文件菜单
  21. QAction *pnew= pFile->addAction("新建");//添加菜单项,pnew指向,新建菜单项 的动作返回值
  22. connect(pnew,&QAction::triggered,
  23. [=]()
  24. {
  25. qDebug()<<"新建被按下";
  26. }
  27. );
  28. pFile->addSeparator();//添加分割线
  29. QAction *popen =pFile->addAction("打开");//再添加一个菜单项,pFile是指向菜单名为文件
  30. //工具栏,菜单项的快捷方式;菜单栏下面的图标快捷工具
  31. QToolBar *toolBar =addToolBar("toolBar");//添加工具栏,菜单栏下面的可视化图标工具快捷键 toolBar指向菜单栏
  32. toolBar->addAction( pnew );//工具栏添加快捷键,添加了一个指向新建菜单项
  33. QPushButton *b=new QPushButton(this);//在工具栏添加一个按键
  34. b->setText("按键1");
  35. //添加小控件
  36. toolBar->addWidget(b);//添加控件为b按钮的控件
  37. connect(b,&QPushButton::clicked,
  38. [=]() //()里面可以添加信号的参数列表 clicked 发了个bool 型 那么
  39. {
  40. b->setText("123");//按一次就变名字
  41. }
  42. );
  43. resize(500,500);
  44. //以下是状态栏*********************
  45. QStatusBar *sBar =statusBar();//
  46. QLabel *lable = new QLabel(this);//新建一个标签
  47. lable->setText("Normal text file");//给标签一个名字
  48. sBar->addWidget(lable);//状态栏 添加一个控件
  49. //默认从左往右边添加
  50. sBar->addWidget(new QLabel("2",this)); // 状态栏添加一个控件 ,控件为2 且控件父对象是这个窗口
  51. //状态栏 添加控件,从右边往左边添加
  52. sBar->addPermanentWidget(new QLabel("3",this));
  53. //核心控件*********************************
  54. QTextEdit *textEdit =new QTextEdit(this);//文本编辑器指定父对象为this
  55. setCentralWidget(textEdit); //设计一个核心控件,为文本编辑器
  56. //浮动窗口
  57. QDockWidget *dock=new QDockWidget(this);//一个新的浮动窗口
  58. addDockWidget(Qt::RightDockWidgetArea,dock);//F1进去看填什么参数,点击参数枚举从中看到第一个参数例子
  59. //添加一个浮动窗口dock 放在右边
  60. //模态对话框,弹出的窗口,无法操作主窗口
  61. //非模态对话框,弹出的窗口,且可以操作主窗口;
  62. QMenu *menu =mBar->addMenu("对话框");
  63. QAction *p1= menu->addAction("模态对话框");
  64. connect(p1,QAction::triggered,
  65. [=]()
  66. {
  67. QDialog dlg;//一个对话框
  68. dlg.show();//显示对话框
  69. dlg.exec();//因为这个一直不退出,主窗口也不执行
  70. qDebug()<<"1111";
  71. }
  72. );
  73. QAction *p2= menu->addAction("非模态对话框");
  74. connect(p2,QAction::triggered,
  75. [=]()
  76. {
  77. //QDialog dlg;//一个对话框 这个因为会被释放,所以改成主窗口的成员在.h文件增加
  78. //或者 动态申请 对话框 QDialog *p_dlg = new QDialog(this);
  79. //动态申请 不好 如果多次进入非模块组,内存只会整个程序结束才释放。内存越来越少
  80. // QDialog *p_dlg = new QDialog(this);
  81. // p_dlg->show();
  82. // p_dlg->setAttribute(Qt::WA_DeleteOnClose,true);//F1进入,第一参,关闭的时候释放
  83. //QDialog dlg;//一个对话框 这个因为会被释放,所以改成主窗口的成员在.h文件增加
  84. dlg.show();//显示对话框
  85. // dlg.exec();//非模态不能用这个,会阻塞
  86. qDebug()<<"1111";
  87. }
  88. );
  89. //以下是文件对话框,和标准对话框***************
  90. //*************下面是标准对话框
  91. QAction *p3= menu->addAction("关于对话框");
  92. connect(p3,QAction::triggered,
  93. [=]()
  94. { //参 父类 标题 内容
  95. QMessageBox::about(this,"about","关于Qt");
  96. }
  97. );
  98. QAction *p4= menu->addAction("问题对话框");
  99. connect(p4,QAction::triggered,
  100. [=]()
  101. {
  102. int ret=QMessageBox::question(this,"question","are you OK?",//参 父类 标题 内容
  103. QMessageBox::Yes|QMessageBox::No);//指定对话框按钮,只能枚举内的
  104. switch (ret) {
  105. case QMessageBox::Yes:
  106. qDebug()<<"i am ok";
  107. break;
  108. case QMessageBox::No:
  109. qDebug()<<"i am bad";
  110. break;
  111. default:
  112. break;
  113. }
  114. }
  115. );
  116. //*************以下是文件对话框 *********
  117. QAction *p5= menu->addAction("文件对话框");
  118. connect(p5,QAction::triggered,
  119. [=]()
  120. { //获取打开文件名称 参 父类 标题 内容
  121. //返回为字符串 ,文件路径
  122. QString str =QFileDialog::getOpenFileName(
  123. this,"open","../",//父类,文本备注,上一级路径
  124. "souce(*.cpp *.h);;Text(*.txt);;all(*.*)"//过滤选项
  125. );
  126. qDebug()<<str;
  127. }
  128. );
  129. }
  130. MainWindow::~MainWindow()
  131. {
  132. }

F1进入帮助文档,标准对话

QMessageBox::question(this,"question","are you OK?");使用F1进入帮助文档,

函数定义,有返回值

返回值枚举

标准对话框效果如下

F1 进入帮助文档文件对话

共有成员如下

QString    getOpenFileName(QWidget * parent = 0, const QString & caption = QString(), const QString & dir = QString(), const QString & filter = QString(), QString * selectedFilter = 0, Options options = 0)

如下是getOpenFileName解析和举例

 参数 : 父类, 文本备注,路径文本类型 ,过滤类型文本;

文件对话框效果图

 打印出文件路径

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/540386
推荐阅读
相关标签
  

闽ICP备14008679号