当前位置: 首页 > news >正文

网站模板库官网南京做网站软件

网站模板库官网,南京做网站软件,wordpress转帝国cms,做公众号模板的网站目录 1、菜单栏QMenuBar 1.1 使用QMainWindow的准备工作 1.2 在ui文件中设计窗口 1.3 在代码中设计窗口 1.4 实现点击菜单项的反馈 1.5 菜单中设置快捷键 1.6 菜单中添加子菜单 1.7 菜单项中添加分割线和图标 1.8 关于菜单栏创建方式的讨论 2、工具栏QToolBar …目录 1、菜单栏QMenuBar 1.1 使用QMainWindow的准备工作  1.2 在ui文件中设计窗口  1.3 在代码中设计窗口 1.4 实现点击菜单项的反馈 1.5 菜单中设置快捷键 1.6 菜单中添加子菜单 1.7 菜单项中添加分割线和图标  1.8 关于菜单栏创建方式的讨论  2、工具栏QToolBar  2.1 创建工具栏 2.2 设置工具项图标  2.3 设置工具栏的停靠位置 2.4 设置浮动、移动属性  3、状态栏QStatusBar  3.1 显示临时消息          3.2 显示永久消息  4、浮动窗口QDockWidget  4.1 设置停靠位置 结语  前言 Qt的窗口界面是通过QMainWindow类实现的该类继承自QWidget。相比于QWidgetQMainWindow生成的界面更像是一个窗口因为该界面的布局已经设置好了分成五个部分1、⼀个菜单栏menu bar2、多个工具栏tool bars3、多个浮动窗⼝dock widgets4、⼀个状态栏status bar 5、 中心部件central widget。开发者只需要在这框架中加入相关控件就能构建出一个窗口了。QMainWindow窗口界面示意图如下 由于中心部件就是QWidget控件本身而QWidget的作用就是接纳各种控件本质上和新建一个QWidget项目的使用逻辑是一样的关于QWidget请看Qt_QWidget的基本使用因此下文就不再描述中心部件的使用了。 1、菜单栏QMenuBar Qt中的菜单栏是通过QMenuBar类来实现的⼀个主窗⼝最多只有⼀个菜单栏位于窗口标题栏下⾯。其中菜单栏中可以有多个菜单而菜单下可以有多个项目当然菜单里也可以有子菜单他们的关系如下图 菜单栏的类是QMenuBar菜单的类是QMenu菜单项的类是QAction此处菜单项实际上就是一个项目只不过该项目在菜单中因此叫做菜单项。 1.1 使用QMainWindow的准备工作  在使用QMainWindow前必须要在Qt创建QMainWindow项目步骤很简单在新建项目后选择界面类的信息时选择QMainWindow即可如下图 后续一直点击下一步就能够自动生成相关文件和代码如下图  关于这里的代码和文件的含义可以移步至此处了解Qt中QWidget的创建和使用此处的代码和文件只不过将QWidget换成了QMainWindow使用原则都是一样的。 1.2 在ui文件中设计窗口  可以在ui文件中对QMainWindow做一些设计这种方式简单明了能够直接观察出效果效果图如下 运行结果 1.3 在代码中设计窗口 除了直接在ui文件中设计窗口还可以用代码的形式来设计窗口首先new一个QMenuBar然后将该QMenuBar通过调用setMenuBar接口设置到当前的窗口中在MainWindow.cpp下实现代码代码如下 #include mainwindow.h #include ui_mainwindow.h #include QMenuBarMainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui-setupUi(this);//创建菜单栏QMenuBar* menubar new QMenuBar(this);this-setMenuBar(menubar);//设置到当前的窗口中//添加菜单菜单的类是QMenuQMenu* menu1 new QMenu(保存,this);QMenu* menu2 new QMenu(编辑,this);menubar-addMenu(menu1);menubar-addMenu(menu2);//添加项目至菜单中QAction* action1 new QAction(菜单项1);QAction* action2 new QAction(菜单项2);menu1-addAction(action1);menu1-addAction(action2); }MainWindow::~MainWindow() {delete ui; } 运行结果 1.4 实现点击菜单项的反馈 在正常的窗口使用中往往是点击一个菜单项后会得到相应的反馈这需要绑定菜单项的信号与槽这里简单的模拟该反馈代码如下 #include mainwindow.h #include ui_mainwindow.h #include QMenuBar #include QDebugMainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui-setupUi(this);//创建菜单栏QMenuBar* menubar new QMenuBar(this);this-setMenuBar(menubar);//添加菜单菜单的类是QMenuQMenu* menu1 new QMenu(保存,this);QMenu* menu2 new QMenu(编辑,this);menubar-addMenu(menu1);menubar-addMenu(menu2);//添加项目至菜单中QAction* action1 new QAction(菜单项1);QAction* action2 new QAction(菜单项2);menu1-addAction(action1);menu1-addAction(action2);//实现菜单项的信号在MainWindow.h头文件中声明了QAction_tri函数connect(action1,QAction::triggered,this,MainWindow::QAction_tri); }MainWindow::~MainWindow() {delete ui; }void MainWindow::QAction_tri() {qDebug()实现菜单项1的功能; } 运行结果 1.5 菜单中设置快捷键 给菜单以及菜单项设置快捷键通过“字母”的方式并通过键盘上的Alt“字母”点击菜单项代码如下 #include mainwindow.h #include ui_mainwindow.h #include QMenuBar #include QDebugMainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui-setupUi(this);//创建菜单栏QMenuBar* menubar new QMenuBar(this);this-setMenuBar(menubar);//添加菜单菜单的类是QMenuQMenu* menu1 new QMenu(保存 (A),this);QMenu* menu2 new QMenu(编辑 (F),this);menubar-addMenu(menu1);menubar-addMenu(menu2);//添加项目至菜单中QAction* action1 new QAction(菜单项1 (C));QAction* action2 new QAction(菜单项2 (B));menu1-addAction(action1);menu1-addAction(action2);//实现菜单项的信号connect(action1,QAction::triggered,this,MainWindow::QAction_tri);connect(action2,QAction::triggered,this,MainWindow::QAction_tri2); }MainWindow::~MainWindow() {delete ui; }void MainWindow::QAction_tri() {qDebug()实现菜单项1的功能; }void MainWindow::QAction_tri2() {qDebug()实现菜单项2的功能; } 运行结果 1.6 菜单中添加子菜单 菜单里除了可以有菜单项还可以存放子菜单在上述构造函数代码中添加代码 //子菜单QMenu* menu_child new QMenu(子菜单,this);menu1-addMenu(menu_child);//子菜单添加项目menu_child-addAction(action1); 运行结果 1.7 菜单项中添加分割线和图标  可以给菜单项添加分割线来区别彼此添加分割线的代码很简单让菜单调用addSeparator函数即可不过添加分割线一定会在该菜单的末尾处添加因此要注意添加顺序代码如下 #include mainwindow.h #include ui_mainwindow.h #include QMenuBarMainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui-setupUi(this);//创建菜单栏QMenuBar* menubar new QMenuBar(this);this-setMenuBar(menubar);//添加菜单菜单的类是QMenuQMenu* menu1 new QMenu(保存 (A),this);QMenu* menu2 new QMenu(编辑 (F),this);menubar-addMenu(menu1);menubar-addMenu(menu2);//添加项目至菜单中QAction* action1 new QAction(菜单项1 (C));QAction* action2 new QAction(菜单项2 (B));menu1-addAction(action1);menu1-addSeparator();//添加分割线menu1-addAction(action2); }MainWindow::~MainWindow() {delete ui; } 运行结果 调用添加图标的接口setIcon即可完成图标的添加不仅菜单项能够添加菜单本身也可以添加具体添加图标的细节请看Qt_控件的QWidget属性介绍代码如下 #include mainwindow.h #include ui_mainwindow.h #include QMenuBarMainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui-setupUi(this);//创建菜单栏QMenuBar* menubar new QMenuBar(this);this-setMenuBar(menubar);//添加菜单菜单的类是QMenuQMenu* menu1 new QMenu(保存 (A),this);QMenu* menu2 new QMenu(编辑 (F),this);menubar-addMenu(menu1);menubar-addMenu(menu2);//添加项目至菜单中QAction* action1 new QAction(菜单项1 (C));QAction* action2 new QAction(菜单项2 (B));menu1-addAction(action1);menu1-addSeparator();//添加分割线menu1-addAction(action2);//添加图片action1-setIcon(QIcon(QPixmap(:/action1)));action2-setIcon(QIcon(QPixmap(:/action2))); }MainWindow::~MainWindow() {delete ui; } 运行结果 1.8 关于菜单栏创建方式的讨论  我们可以在ui文件的右上角看到关于QMainWindow的初始化状况 上述代码中使用菜单栏的方式是new一个QMenuBar然后将该QMenuBar设置到当前窗口中。这么做会导致内存泄漏因为在创建QMainWindow时Qt会自动生成了一个QMenuBar若我们自己再new一个QMenuBar并对其调用setMenuBar接口那么会导致旧的QMenuBar脱离Qt对象树即旧的QMenuBar无法自动释放了从而导致内存泄漏。 所以使用菜单栏QMenuBar时推荐的做法是调用函数menuBar该函数的作用是1、如果QMenuBar已经存在直接获取并返回。2、如果QMenuBar不存在则会自动new一个新的然后返回new出来的菜单栏。 因此上述代码中创建菜单栏的推荐的代码为 //创建菜单栏 //QMenuBar* menubar new QMenuBar(this); QMenuBar* menubar this-menuBar(); this-setMenuBar(menubar); 恒古不变的是都要调用setMenuBar将菜单栏设置到当前界面。  2、工具栏QToolBar  工具栏跟菜单栏不一样菜单栏是QMainWindow默认就有的而工具栏是必须需要我们手动new的并且菜单栏只能有一个而工具栏可以有多个并且工具栏默认是可以用鼠标拖动的。工具栏里存放的直接就是项目QAction目的就是方便用户快速使用某个功能通常这些项目以图标的形式存在。工具栏实物图如下 2.1 创建工具栏 先手动new出工具栏对象QToolBar然后调用QMainWindow的addToolBar函数将new出的对象作为该函数的实参完成工具栏的创建和显示并在工具栏中创建工具项代码如下 #include mainwindow.h #include ui_mainwindow.h #include QToolBar #include QDebugMainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui-setupUi(this);//创建工具栏QToolBar* toolbar new QToolBar(this);this-addToolBar(toolbar);//创建工具项QAction* action1 new QAction(文件);QAction* action2 new QAction(编辑);toolbar-addAction(action1);toolbar-addAction(action2);//连接工具项的信号与槽connect(action1,QAction::triggered,this,MainWindow::action2_tri1);connect(action2,QAction::triggered,this,MainWindow::action2_tri2); }MainWindow::~MainWindow() {delete ui; }void MainWindow::action2_tri1() {qDebug()文件; }void MainWindow::action2_tri2() {qDebug()编辑; } 运行结果 2.2 设置工具项图标  设置图标的逻辑和上述给菜单项设置图标的逻辑是一样的只需要用工具项调用函数setIcon即可不过对工具项设置图标后会覆盖原先的文本内容将原先的文本内容以鼠标停悬时的提示信息显示出来代码如下 //设置图标action1-setIcon(QIcon(:/action1));action2-setIcon(QIcon(:/action2)); 运行结果 也可以通过调用函数setToolTip自定义提示信息代码如下 //设置图标action1-setIcon(QIcon(:/action1));//设置提示信息action1-setToolTip(这是一个文件);action2-setIcon(QIcon(:/action2)); 运行结果 2.3 设置工具栏的停靠位置 工具栏默认停靠位置是在窗口的上方位置设置有两个概念。⼀个是在添加⼯具栏调用addToolBar()的同时指定停靠的位置另⼀种是在创建之后调用QToolBar类提供的setAllowedAreas()函数来设置允许停靠的位置。可以设置的位置如下 • Qt::LeftToolBarArea 停靠在左侧 • Qt::RightToolBarArea 停靠在右侧 • Qt::TopToolBarArea 停靠在顶部 • Qt::BottomToolBarArea 停靠在底部 • Qt::AllToolBarAreas 以上四个位置都可停靠 概念一设置工具栏的初始位置代码如下 #include mainwindow.h #include ui_mainwindow.h #include QToolBarMainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui-setupUi(this);//创建工具栏QToolBar* toolbar1 new QToolBar(this);this-addToolBar(Qt::LeftToolBarArea,toolbar1);QToolBar* toolbar2 new QToolBar(this);this-addToolBar(Qt::RightToolBarArea,toolbar2);}MainWindow::~MainWindow() {delete ui; } 运行结果 概念二后续使用setAllowedAreas函数来设置允许停靠的位置代码如下 #include mainwindow.h #include ui_mainwindow.h #include QToolBarMainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui-setupUi(this);//创建工具栏QToolBar* toolbar1 new QToolBar(this);this-addToolBar(toolbar1);QToolBar* toolbar2 new QToolBar(this);this-addToolBar(toolbar2);//只允许toolbar1停靠在左边但是初始位置依然是在上方toolbar1-setAllowedAreas(Qt::LeftToolBarArea);//只允许toolbar1停靠在右边但是初始位置依然是在上方toolbar2-setAllowedAreas(Qt::RightToolBarArea);}MainWindow::~MainWindow() {delete ui; } 工具栏是可以拖动的默认情况下工具栏可以停靠在上下左右四个位置如果调用了setAllowedAreas则说明工具栏的停靠位置受setAllowedAreas函数的限制了。 2.4 设置浮动、移动属性  通过调用函数setFloatable来设置工具栏的浮动属性默认运行工具栏可以浮动若调用setFloatable并传false则不允许浮动工具栏代码如下 #include mainwindow.h #include ui_mainwindow.h #include QToolBarMainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui-setupUi(this);//创建工具栏QToolBar* toolbar1 new QToolBar(this);this-addToolBar(toolbar1);//设置项目方便观察运行效果QAction* action new QAction(文件);toolbar1-addAction(action);//设置不可浮动toolbar1-setFloatable(false); }MainWindow::~MainWindow() {delete ui; } 运行结果 此时工具栏虽然可以被移动但是不能浮动在界面中的任意位置只要鼠标松开工具栏就会自动恢复到之前的位置。 设置移动属性的逻辑和上述一样通过QToolBar类提供的setMovable()函数来设置默认可以移动传false则不能移动。当工具栏不能移动时意味着工具栏也不能浮动并且工具栏的停靠位置也就无法改变了。代码如下 #include mainwindow.h #include ui_mainwindow.h #include QToolBarMainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui-setupUi(this);//创建工具栏QToolBar* toolbar1 new QToolBar(this);this-addToolBar(toolbar1);//设置项目方便观察运行效果QAction* action new QAction(文件);toolbar1-addAction(action);//设置不可浮动toolbar1-setFloatable(false);//设置不可移动toolbar1-setMovable(false); }MainWindow::~MainWindow() {delete ui; } 运行结果 3、状态栏QStatusBar  状态栏是界面中输出简要信息的区域⼀般位于主窗口的最底部⼀个窗口中最多只能有⼀个状态栏。在Qt中状态栏是通过QStatusBar类来实现的。在状态栏中可以显示的消息类型有 • 临时消息如当前程序状态 • 永久消息如程序版本号 • 进度消息如进度条提示 并且状态栏是QMainWindow中默认存在的因此创建状态栏是无需用new的方式而是调用statusBar()函数获取默认的状态栏。  3.1 显示临时消息          调用函数showMessage来设置一个临时消息 代码如下 #include mainwindow.h #include ui_mainwindow.hMainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui-setupUi(this);QStatusBar* status statusBar();status-showMessage(这是一个临时消息,3000);//3000ms 3s}MainWindow::~MainWindow() {delete ui; } 运行结果 该信息会在3秒后消失。  3.2 显示永久消息  通过在状态栏中添加标签的方式来实现显示永久消息因为标签中的文本内容是永久性的代码如下  #include mainwindow.h #include ui_mainwindow.h #include QLabelMainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui-setupUi(this);QStatusBar* status statusBar();//status-showMessage(这是一个临时消息,3000);//3000ms 3sQLabel* label new QLabel(这是一个永久消息);status-addWidget(label);//在状态栏右侧显示QLabel* label1 new QLabel(这是一个右侧消息);status-addPermanentWidget(label1);}MainWindow::~MainWindow() {delete ui; } 运行结果 4、浮动窗口QDockWidget  有了上述浮动属性的概念浮动窗口也就不难理解他是一个窗口并且可以浮动在界面中的任意位置并且也可以停靠在窗口四周。他的类是QDockWidget 由于他不是QMainWindow默认就有的控件因此需要我们手动new出来然后调用addDockWidget函数将其置于当前窗口中。代码如下 #include mainwindow.h #include ui_mainwindow.h #include QDockWidgetMainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui-setupUi(this);QDockWidget* dock new QDockWidget(this);addDockWidget(Qt::BottomDockWidgetArea,dock);//设置初始在底部}MainWindow::~MainWindow() {delete ui; } 运行结果 4.1 设置停靠位置 这里的设置允许停靠的逻辑和工具栏的逻辑是一样的也通过setAllowedAreas来进行设置允许停靠的位置有 • Qt::LeftDockWidgetArea 停靠在左侧 • Qt::RightDockWidgetArea 停靠在右侧 • Qt::TopDockWidgetArea 停靠在顶部 • Qt::BottomDockWidgetArea 停靠在底部 • Qt::AllDockWidgetAreas 以上四个位置都可停靠 设置完成后则浮动窗口只能在对应位置处停靠。  结语  以上就是关于Qt窗口界面QMainWindow的介绍QMainWindow相比于QWidget多了四个控件这些控件都是组成窗口的重要部分而且在实际运用中窗口界面才是被运用的最多的所以理解这四个控件尤为重要。 最后如果本文有遗漏或者有误的地方欢迎大家在评论区补充谢谢大家
http://www.w-s-a.com/news/981120/

相关文章:

  • 肇庆住房和城乡建设局网站广州seo公司排名
  • j2ee网站开发买什么书网络媒体有哪些
  • 江西省住房建设部官方网站用多说的网站
  • 云课堂哪个网站做的好网站 集约化平台建设方案的通知
  • 撰写网站栏目规划怎么建自己的平台
  • 中国建设银行巴黎分行网站建设银行忘记密码网站首页
  • 网站左侧树形导航怎么做像wordpress一样的网站吗
  • 做网站用的书公司做网站 需要解决哪些问题
  • 电器网站建设策划书深圳动画制作
  • cpa网站建设wordpress支付宝微信收费吗
  • 权威网站排名桂林生活网论坛
  • 网站设计息济南网站建设济南
  • 安蓉建设总公司网站网站怎么做才能被百度收录
  • 电子商务网站业务流程分析做效果图的外包网站
  • wordpress仿站视频教程wordpress用什么php版本好
  • 郑州做网站九零后网络沧州做网站的专业公司
  • 小游戏网站建设可以自己做图片的软件
  • 湖南地税局官网站水利建设基金app仿制
  • 苏州网站设计kgwl建设网站需要用到哪些技术人员
  • 万户网络做网站如何亚马逊网站建设
  • 门户网站制作费用暴雪公司最新消息
  • 深圳专业建网站公司济南公司做网站的价格
  • 怎么运行自己做的网站网上申请平台怎么申请
  • 旅游公司网站 优帮云新闻近期大事件
  • 电商网站后台报价营销软文小短文
  • 网站建设项目售后服务承诺公司名称邮箱大全
  • 湖南网站建设哪里好做ppt的网站叫什么名字
  • 容城县建设银行网站电子商务网站建设子项目
  • 网站管理助手3.0做淘宝网站用什么软件做
  • 贵阳做网站的公司wordpress趣味插件