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

信誉好的天津网站建设大学科技园东区 做网站

信誉好的天津网站建设,大学科技园东区 做网站,企业做网站的方案,企点营销软件文章目录 QMainWindow菜单栏工具栏状态栏浮动窗口对话框自定义对话框Qt内置对话框QMessageBox QMainWindow Qt中的主窗口以QMainWindow表示#xff0c;其总体结构如下#xff1a; 菜单栏 菜单栏MenuBar#xff0c;可包含多个菜单Menu#xff0c;每个菜单也可以包含多个菜… 文章目录 QMainWindow菜单栏工具栏状态栏浮动窗口对话框自定义对话框Qt内置对话框QMessageBox QMainWindow Qt中的主窗口以QMainWindow表示其总体结构如下 菜单栏 菜单栏MenuBar可包含多个菜单Menu每个菜单也可以包含多个菜单项Action以QtCreator的菜单栏为例。 Qt中QMenuBar表示菜单栏QMenu表示菜单QAction表示菜单项。 核心接口 接口说明void QMainWindow::setMenuBar(QMenuBar *menuBar)为主窗口设置菜单栏addMenu(QMenu *menu)为菜单栏添加菜单或在菜单中嵌套添加子菜单QWidget::addAction(QAction *action) QMenu::addAction(const QString text)添加菜单项可以使用QAction添加也可直接以文本添加 先上代码。 MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui-setupUi(this);//1.创建一个菜单栏并将其设置到窗口MainWindow中QMenuBar* menuBar this-menuBar();this-setMenuBar(menuBar);//2.为菜单栏创建菜单QMenu* menu1 new QMenu(文件 (F));QMenu* menu2 new QMenu(编辑 (E));QMenu* menu3 new QMenu(帮助 (H));//3.将菜单加入菜单栏中menuBar-addMenu(menu1);menuBar-addMenu(menu2);menuBar-addMenu(menu3);//(嵌套子菜单)QMenu* menu31 new QMenu(目录);menu3-addMenu(menu31);menu31-addAction(h1);//直接使用字符串也可以添加菜单项menu31-addAction(h2);menu31-addAction(h3);//4.为菜单创建一些菜单项ActionQAction* action1 new QAction(新建 (N));QAction* action2 new QAction(打开 (O));QAction* action3 new QAction(另存为 (S));menu1-addAction(action1);menu1-addSeparator();//在菜单项之间增加分隔线menu1-addAction(action2);menu1-addSeparator();menu1-addAction(action3);//(为菜单项设置图标)action1-setIcon(QIcon(:/create.png));action2-setIcon(QIcon(:/open.png));action3-setIcon(QIcon(:/save.png));//5.为Aciton的触发绑定槽函数connect(action1, QAction::triggered, this, MainWindow::handle1);connect(action2, QAction::triggered, this, MainWindow::handle2);connect(action3, QAction::triggered, this, MainWindow::handle3);//6.为菜单栏添加一个用于关闭窗口的ActionQAction* action new QAction(关闭 (C));menuBar-addAction(action);connect(action, QAction::triggered, this, MainWindow::close); }创建菜单栏时可以使用以下两种方式 //1. QMenuBar* menuBar new QMenuBar(); this-setMenuBar(menuBar); //2. QMenuBar* menuBar this-menuBar(); this-setMenuBar(menuBar);第一种方法是直接创建QMenuBar对象然后通过setMenuBar()设置菜单栏这种方法可能会导致内存泄露因为有时候菜单栏是已经存在的比如ui文件会自动生成菜单栏此时如果手动创建一个并set为菜单栏就会覆盖原先的菜单栏导致其内存泄漏。 正确的方法是调用QMainWindow的接口menuBar()其功能若菜单栏已存在则返回已存在的菜单栏若不存在则创建一个新的菜单栏再返回。 创建菜单时需要为菜单设置一个文本title而你可以在title中使用指定该菜单的快捷键如QMenu* menu1 new QMenu(文件 (F))则F为该菜单的快捷键ALT F触发该菜单。同理创建QAction菜单项时也可用同样的方法设置菜单项的快捷键。 菜单可以嵌套即为QMenu添加另外一个QMenu addSeparator()在菜单项之间添加分隔线优化界面。还可以为菜单项添加图标icon。 菜单模块中最后与用户交互的是QAction。用户点击某个菜单项触发QAction的triggered信号通过信号槽机制定义处理方法。需要注意的是不仅菜单栏可以添加QAction菜单也可以添加QActionQAction抽象出公共的用户交互动作。 最终效果 工具栏 ⼯具栏是应用程序中集成各种功能实现快捷使⽤的⼀个区域。可有可无不是程序中必须存在的部件。在Qt中QToolBar表示工具栏是一个可移动的组件QAction表示工具栏中的快捷项。一个窗口可以有多个工具栏。 先上代码。 MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui-setupUi(this);//1.创建工具栏QToolBar* toolBar new QToolBar();this-addToolBar(toolBar);//一个窗口可以有多个工具栏, 因此使用add而非set//2.添加快捷项QAction* action1 new QAction(保存);QAction* action2 new QAction(打开);toolBar-addAction(action1);toolBar-addAction(action2);//设置快捷项图标action1-setIcon(QIcon(:/save.png));action2-setIcon(QIcon(:/open.png));//设置快捷项的提示信息action1-setToolTip(点击此处保存文件);action2-setToolTip(点击此处打开文件);//绑定触发快捷项的槽函数connect(action1, QAction::triggered, this, [](){qDebug() 保存成功;});connect(action2, QAction::triggered, this, [](){qDebug() 打开成功;}); }关于工具栏的停靠位置可以在添加QToolBar对象时指定停靠位置由枚举类型Qt::ToolBarArea提供有四种. enum ToolBarArea {LeftToolBarArea 0x1,//左RightToolBarArea 0x2,//右TopToolBarArea 0x4,//上BottomToolBarArea 0x8//下 };//为窗口添加工具栏时指定工具栏的初始停靠位置 QToolBar* toolBar new QToolBar(); this-addToolBar(Qt::LeftToolBarArea, toolBar);后续可以通过代码决定工具栏允许停靠的位置、是否允许浮动、是否允许移动。 //3.工具栏的位置 toolBar-setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);//设置允许停靠的位置 toolBar-setFloatable(false);//设置是否可以浮动 (默认为true) toolBar-setMovable(true);//设置是否可以移动 (默认为true)同一个QAction可以为菜单项和工具栏中的快捷项共享快捷项成为菜单项的快捷方式。在上述代码作出以下修改。 //创建菜单栏 QMenuBar* menuBar this-menuBar(); this-setMenuBar(menuBar); QMenu* menu new QMenu(文件); menuBar-addMenu(menu); //... //添加action1菜单项action1已添加为工具栏的快捷项 menu-addAction(action1);状态栏 状态栏是应⽤程序中输出简要信息的区域。⼀般位于主窗口的最底部⼀个窗口中最多只能有⼀个状态栏。在Qt中状态栏是通过QStatusBar类来实现的。在状态栏中可以显示的消息类型有 • 实时消息如当前程序状态 • 永久消息如程序版本号机构名称 • 进度消息如进度条提示 我们可以调用状态栏的showMessage()函数输出一些简单的临时信息也可以在状态栏中添加一些控件widget以显示特定的信息。 MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui-setupUi(this);//1.创建状态栏QStatusBar* statusBar this-statusBar();//存在则直接获取不存在则先创建this-setStatusBar(statusBar);//2.显示信息statusBar-showMessage(This is statusBar!!);//也可以为显示信息添加timeout超时时间单位为ms }为状态栏添加一些控件 MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui-setupUi(this);//1.创建状态栏QStatusBar* statusBar this-statusBar();//存在则直接获取不存在则先创建this-setStatusBar(statusBar);//2.创建控件QLabel* label new QLabel(This is a statusBar!!);QProgressBar* progressBar new QProgressBar();progressBar-setValue(50);//3.添加控件到状态栏中可以为控件设置拉伸系数statusBar-addWidget(label, 1);//从左往右添加statusBar-addPermanentWidget(progressBar, 2);//从右往左添加 }浮动窗口 在Qt中浮动窗口也称之为铆接部件一般作为主窗口内部的子窗口。浮动窗口是通过QDockWidget类来实现浮动的功能。浮动窗口⼀般是位于核心部件的周围可以有多个。 注意Qt中规定QDockWidget中只能有一个QWidget因此若需要在浮动窗口中实现更多效果需要先创建一个QWidget对QWidget进行创造再将其设置到浮动窗口QDockWidget中。 MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui-setupUi(this);//1.创建浮动窗口QDockWidget* dockWidget new QDockWidget();this-addDockWidget(Qt::LeftDockWidgetArea, dockWidget);//注意添加浮动窗口时须指定其停靠位置(上下左右)//2.为浮动窗口设置一个QWidgetQWidget* widget new QWidget();dockWidget-setWidget(widget);//3.在widget中添加一些控件QVBoxLayout* layout new QVBoxLayout();widget-setLayout(layout);QLabel* label new QLabel(This is a dockWidget!!);QPushButton* btn1 new QPushButton(按钮1);QPushButton* btn2 new QPushButton(按钮2);layout-addWidget(label);layout-addWidget(btn1);layout-addWidget(btn2);//4.设置浮动窗口只能停靠左侧或右侧dockWidget-setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); }对话框 对话框通常是⼀个顶层窗⼝出现在程序最上层⽤于实现短期任务或者简洁的用户交互。Qt的对话框由类QDialog实现。Qt中还提供了一些内置对话框方便特殊场景下的开发Qt常用的内置对话框有QFiledialog⽂件对话框、QColorDialog颜⾊对话框、QFontDialog字体对话框、QInputDialog输⼊对话框和 QMessageBox消息框。 //主窗口设置一个按钮点击按钮弹出对话框 void MainWindow::on_pushButton_clicked() {//1.创建对话框QDialog* dialog new QDialog(this); dialog-resize(500,300);dialog-setWindowTitle(对话框);//2.显示对话框dialog-show(); }关于对话框的内存泄漏问题 上述创建对话框的过程虽然将对话框的父节点设置为上级主窗口但是防不住用户在主窗口销毁之前打开的对话框过多、或对话框占用内存过大导致内存泄漏。我们想要达成的效果是用户关闭一个对话框点击对话框左上角的❌时就将该对话框delete。Qt中为对话框QDialog内置了一些属性设置WA_DeleteOnClose属性表示对话框关闭时释放内存。 dialog-setAttribute(Qt::WA_DeleteOnClose);对话框有两种类型模态(modal) 和 非模态。 模态对话框显示后无法与父窗口进行交互是⼀种阻塞式的对话框。使用QDialog::exec()函数调用。模态对话框适用于一些必须让用户作出选择的场景如文件选择、打印设置等。 非模态对话框显示后依然可以与父窗口进行交互是一种非阻塞式的对话框。使用QDialog::show()函数调用。 自定义对话框 Qt提供对话框基类QDialog开发者如果需要自定义一个对话框就需要以QDialog为父类创建一个派生类在派生类中自定义一些控件、GUI效果等。具体做法可以通过QtCreator内的文件菜单创建一个继承自QDialog的派生类并在自动生成的头文件和源文件中自定义派生类。 //这里创建了一个Dialog类继承自QDialog //在其构造函数中添加一些控件 Dialog::Dialog(QWidget* parent) : QDialog(parent) {QVBoxLayout* layout new QVBoxLayout();this-setLayout(layout);QLabel* label new QLabel(This is a Dialog!!);QPushButton* btn new QPushButton(按钮);layout-addWidget(label);layout-addWidget(btn); }通过创建对话框的ui文件进行图形化的自定义。 Qt内置对话框 ​ QMessageBox QMessageBOX是消息对话框主要用于为用户提示主要的信息或是让用户进行选择操作。 一个消息对话框中的内容主要包括标题、提示信息、消息类型图标和按钮。 先上代码。 void MainWindow::on_pushButton_clicked() {QMessageBox* msgBox new QMessageBox(this);msgBox-setWindowTitle(消息对话框);//设置标题msgBox-setText(Warning);//设置提示信息msgBox-setIcon(QMessageBox::Warning);//设置消息的类型msgBox-setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);//设置标准按钮// 也可以调用addButton为消息对话框添加自定义按钮但是一般用标准按钮就足够了// msgBox-addButton() }消息类型 enum Icon {NoIcon 0,Information 1,Warning 2,Critical 3,Question 4 };类型适用场景Question用于正常操作过程中的提问Information用于提示正常运行的消息Warning用于提示非关键的错误警告Critical用于提示严重错误 事实上QMessageBox提供了一系列静态函数用于创建一个消息对话框一个函数涵盖了设置标题、文本、消息类型和按钮等功能。如下四个不同的静态函数表示创建四种不同类型的消息对话框。 void MainWindow::on_pushButton_clicked() {QMessageBox::warning(this,消息对话框,Do you want to do something?, QMessageBox::Ok | QMessageBox::No); }使用静态函数生成的对话框是模态类型的。 如何获取用户与消息对话框交互的结果 对于模态类型的消息对话框其exec()返回值就是用户选择的结果返回的是选择的StandardButton的值。Qt::StandardButton是一个枚举类型每一种按钮对应一个特定值。而critical information, warning, question四个静态函数的返回值是QMessageBox::StandardButton就是返回用户点击的按钮。 我们可以根据这个返回值对用户不同的选中作出不同的处理。 void MainWindow::on_pushButton_clicked() {int ret QMessageBox::warning(this,消息对话框,Do you want to do something?, QMessageBox::Ok | QMessageBox::No);if(ret QMessageBox::Ok){qDebug() Ok, lets do it;}else if(ret QMessageBox::No){qDebug() Alright, Bye;} }
文章转载自:
http://www.morning.bktzr.cn.gov.cn.bktzr.cn
http://www.morning.tkkjl.cn.gov.cn.tkkjl.cn
http://www.morning.ftsmg.com.gov.cn.ftsmg.com
http://www.morning.dxgt.cn.gov.cn.dxgt.cn
http://www.morning.ybnps.cn.gov.cn.ybnps.cn
http://www.morning.fgppj.cn.gov.cn.fgppj.cn
http://www.morning.lbjdx.cn.gov.cn.lbjdx.cn
http://www.morning.mtzyr.cn.gov.cn.mtzyr.cn
http://www.morning.kwqt.cn.gov.cn.kwqt.cn
http://www.morning.qlry.cn.gov.cn.qlry.cn
http://www.morning.lgznc.cn.gov.cn.lgznc.cn
http://www.morning.dpqwq.cn.gov.cn.dpqwq.cn
http://www.morning.mqmmc.cn.gov.cn.mqmmc.cn
http://www.morning.jhxdj.cn.gov.cn.jhxdj.cn
http://www.morning.rbbgh.cn.gov.cn.rbbgh.cn
http://www.morning.qkzdc.cn.gov.cn.qkzdc.cn
http://www.morning.fkgcd.cn.gov.cn.fkgcd.cn
http://www.morning.bpwdc.cn.gov.cn.bpwdc.cn
http://www.morning.fslxc.cn.gov.cn.fslxc.cn
http://www.morning.brzlp.cn.gov.cn.brzlp.cn
http://www.morning.gqwbl.cn.gov.cn.gqwbl.cn
http://www.morning.bmhc.cn.gov.cn.bmhc.cn
http://www.morning.xkwrb.cn.gov.cn.xkwrb.cn
http://www.morning.tjwfk.cn.gov.cn.tjwfk.cn
http://www.morning.yyngs.cn.gov.cn.yyngs.cn
http://www.morning.hsrpc.cn.gov.cn.hsrpc.cn
http://www.morning.wgkz.cn.gov.cn.wgkz.cn
http://www.morning.ljcjc.cn.gov.cn.ljcjc.cn
http://www.morning.xhwty.cn.gov.cn.xhwty.cn
http://www.morning.dbrdg.cn.gov.cn.dbrdg.cn
http://www.morning.lkjzz.cn.gov.cn.lkjzz.cn
http://www.morning.fthcn.cn.gov.cn.fthcn.cn
http://www.morning.lbrwm.cn.gov.cn.lbrwm.cn
http://www.morning.chkfp.cn.gov.cn.chkfp.cn
http://www.morning.mgwdp.cn.gov.cn.mgwdp.cn
http://www.morning.nmkfy.cn.gov.cn.nmkfy.cn
http://www.morning.touziyou.cn.gov.cn.touziyou.cn
http://www.morning.ybnzn.cn.gov.cn.ybnzn.cn
http://www.morning.tpmnq.cn.gov.cn.tpmnq.cn
http://www.morning.zrnph.cn.gov.cn.zrnph.cn
http://www.morning.wdlg.cn.gov.cn.wdlg.cn
http://www.morning.nrjr.cn.gov.cn.nrjr.cn
http://www.morning.pffx.cn.gov.cn.pffx.cn
http://www.morning.bgxgq.cn.gov.cn.bgxgq.cn
http://www.morning.wcqkp.cn.gov.cn.wcqkp.cn
http://www.morning.snktp.cn.gov.cn.snktp.cn
http://www.morning.xjbtb.cn.gov.cn.xjbtb.cn
http://www.morning.ghryk.cn.gov.cn.ghryk.cn
http://www.morning.rqlqd.cn.gov.cn.rqlqd.cn
http://www.morning.qxgmp.cn.gov.cn.qxgmp.cn
http://www.morning.pjwfs.cn.gov.cn.pjwfs.cn
http://www.morning.dfkmz.cn.gov.cn.dfkmz.cn
http://www.morning.knczz.cn.gov.cn.knczz.cn
http://www.morning.tjkth.cn.gov.cn.tjkth.cn
http://www.morning.fwwkr.cn.gov.cn.fwwkr.cn
http://www.morning.wschl.cn.gov.cn.wschl.cn
http://www.morning.ampingdu.com.gov.cn.ampingdu.com
http://www.morning.llxqj.cn.gov.cn.llxqj.cn
http://www.morning.kjfsd.cn.gov.cn.kjfsd.cn
http://www.morning.pnbls.cn.gov.cn.pnbls.cn
http://www.morning.ljsxg.cn.gov.cn.ljsxg.cn
http://www.morning.mcmpq.cn.gov.cn.mcmpq.cn
http://www.morning.wcczg.cn.gov.cn.wcczg.cn
http://www.morning.ckhry.cn.gov.cn.ckhry.cn
http://www.morning.bqpg.cn.gov.cn.bqpg.cn
http://www.morning.rongxiaoman.com.gov.cn.rongxiaoman.com
http://www.morning.bxhch.cn.gov.cn.bxhch.cn
http://www.morning.hmsong.com.gov.cn.hmsong.com
http://www.morning.wmsgt.cn.gov.cn.wmsgt.cn
http://www.morning.zfwjh.cn.gov.cn.zfwjh.cn
http://www.morning.mhmsn.cn.gov.cn.mhmsn.cn
http://www.morning.gbnsq.cn.gov.cn.gbnsq.cn
http://www.morning.pbygt.cn.gov.cn.pbygt.cn
http://www.morning.ktsth.cn.gov.cn.ktsth.cn
http://www.morning.nslwj.cn.gov.cn.nslwj.cn
http://www.morning.wmyqw.com.gov.cn.wmyqw.com
http://www.morning.pjwrl.cn.gov.cn.pjwrl.cn
http://www.morning.dnvhfh.cn.gov.cn.dnvhfh.cn
http://www.morning.rtqyy.cn.gov.cn.rtqyy.cn
http://www.morning.smpb.cn.gov.cn.smpb.cn
http://www.tj-hxxt.cn/news/236170.html

相关文章:

  • 计算机专业做网站的总结做房产中介网站
  • 站长忽略的观点好的做问卷调查的网站好
  • 彩票网站代理济南电商培训基地
  • 网站推广策划案效果好提供赣州网站建设
  • 投资交易网站开发安阳网站建设推广优化
  • 织梦网站更新龙岗seo优化
  • 重庆网站模板平台建设怎么自己注册域名
  • 网站建设需要的人员网站域名备案信息查询
  • 电子商务网站建设需要什么网站建设公司成都案例展示
  • 北京vi设计公司怎么样国外seo教程
  • 购物网站建设好处如何做好一个网站的推广
  • 网站禁止被采集三星网站建设内容
  • 英文网站建设的问题支持wordpress的空间
  • 事业单位 网站备案浙江百度代理公司
  • js与asp.net做的网站网站建设包含那些 内容
  • 低价格制作网站商务网站业务流程
  • 网站代码模板编写桂林 网站建站
  • 帮人做ppt的网站店铺名称设计logo设计
  • 能看建设动漫黄图的网站安阳网站建设哪家正规
  • 做免费网站官方网站建设 在线磐石网络
  • wordpress 重定向过多外贸seo优化方法
  • 网站建设类昆明公司建设网站
  • 一屏式网站有什么好处WordPress 4.4.16
  • 找公司做网站需要注意冷水滩城乡建设局网站
  • 哪些公司可以做网站附近广告设计与制作
  • 好大夫在线网站官网做提眉的医生租房注册公司需要什么资料
  • 网站架构师工资wordpress游戏插件
  • 网站模板库免费做一件代发的网站
  • 辽宁市营商环境建设局网站网络营销平台推广方案
  • 牡丹江有做网站的人吗关联词有哪些三年级