Qt开发⑧Qt的窗口_下_浮动窗口+对话框

Qt实现浮动窗口效果(C/C++) 在Qt中,我们可以使用一些技术来实现浮动窗口效果。浮动窗口是指一个可以悬浮在其他窗口之上的窗口,通常用于显示临时信息或者提供快速访问功能。通过运行上述代码,我们可以看到一个没有边框的浮动窗口。你可以使用鼠标左键按住窗口的任意位置进行拖动,从而改变窗口的位置。中,如果鼠标为左键按下状态,我们根据鼠标的移动来更新窗口的位置。中,我们记录了鼠标按下时的位置,用于计算鼠标移动时的偏移量。在构造函数中,我们设置了窗口的一些属性,包括。然后,我们设置窗口的位置和大小,并显示出来。在上面的代码中,我们创建了一个名为。 阅读详情

目录

1. 浮动窗口

1.1 浮动窗口的创建

1.2 设置停靠的位置

2. 对话框

2.1 对话框简介

2.2 对话框的分类

2.3 自定义对话框

2.4 Qt 内置对话框

2.4.1 消息对话框 QMessageBox

2.4.2 颜色对话框 QColorDialog

2.4.3 文件对话框 QFileDialog

2.4.4 字体对话框 QFontDialog

2.4.5 输入对话框 QInputDialog

本篇完。


1. 浮动窗口

        在 Qt 中,浮动窗口也称之为铆接部件。浮动窗口是通过 QDockWidget 类来实现浮动的功能。浮动窗口一般是位于核心部件的周围,可以有多个。

1.1 浮动窗口的创建

浮动窗口的创建是通过 QDockWidget 类提供的构造方法 QDockWidget() 函数动态创建的。

示例:


1.2 设置停靠的位置

        浮动窗口是位于中心部件的周围。可以通过 QDockWidget类 中提供 setAllowedAreas() 函数设置其允许停靠的位置。其中可以设置允许停靠的位置有:

  • Qt::LeftDockWidgetArea 停靠在左侧
  • Qt::RightDockWidgetArea 停靠在右侧
  • Qt::TopDockWidgetArea 停靠在顶部
  • Qt::BottomDockWidgetArea 停靠在底部
  • Qt::AllDockWidgetAreas 以上四个位置都可停靠

        不能直接给浮动窗口添加子控件,而是需要创建出一个单独的​ QWidget,把需要添加的控件加入到 QWidget 中,然后再把这个 QWidget 设置到 dockWidget 中。

示例如下:设置浮动窗口只允许在左边或者上边停靠:


2. 对话框

2.1 对话框简介

        对话框是 GUI 程序中不可或缺的组成部分。一些不适合在主窗口实现的功能组件可以设置在对话框中。对话框通常是一个顶层窗口,出现在程序最上层,用于实现短期任务或者简洁(“短平快”)的用户交互。Qt 常用的内置对话框有:QFiledialog(文件对话框)、QColorDialog(颜色对话框)、QFontDialog (字体对话框)、QInputDialog (输入对话框)和 QMessageBox(消息框) 。


2.2 对话框的分类

对话框分为 模态对话框 和 非模态对话框 和 混合属性对话框。

(1)模态对话框

        模态对话框 指的是:显示后无法与父窗口进行交互,是一种阻塞式的对话框。使用 QDialog:: exec () 函数调用。

模态对话框适用于必须依赖用户选择的场合,比如消息显示、文件选择、打印设置等。


        示例:新建 Qt 项目,在 ui 文件中的菜单栏中设置两个菜单:“文件” 和 “编辑”,在菜单 “文件” 下新建菜单项:“创建” 并将菜单项 “新建” 置于工具栏中。

如下图示:


在 mainwindow.cpp 文件中实现:当点击 “新建” 时,弹出一个模态对话框

说明:在菜单项中,点击菜单项时就会触发 triggered() 信号。


(2)非模态对话框

        非模态对话框显示后独立存在,可以同时与父窗口进行交互,是一种非阻塞式对话框,使用 QDialog::show() 函数调用。

        非模态对话框⼀般在堆上创建,这是因为如果创建在栈上时,弹出的非模态对话框就会一闪而过。我们需要将 delete 和关闭按钮的点击信号关联起来,在用户点击关闭时触发 delete,所以同时还需要设置 Qt:WA_DeleteOnClose 属性,目的是:当创建多个非模态对话框时(如打开了多个非模态窗口),为了避免内存泄漏要设置此属性。

非模态对话框适用于特殊功能设置的场合,比如查找操作,属性设置等。

示例:


(3)混合属性对话框

        混合属性对话框同时具有模态对话框和非模态对话框的属性,对话框的生成和销毁具有非模态对话框属性,功能上具有模态对话框的属性。

        使用 QDialog::setModal() 函数可以创建混合特性的对话框。通常,创建对话框时需要指定对话框的父组件。

示例:


2.3 自定义对话框

(1)通过代码的方式

展示效果:


(2)通过图形化界面的方式

新增一个 ui 文件:

完成之后新增的文件:

选择 dialog.ui,创建一个 Push Button 和一个 Label:

代码:

展示效果:


2.4 Qt 内置对话框

        Qt 提供了多种可复用的对话框类型,即 Qt 标准对话框。Qt 标准对话框全部继承于 QDialog类。常用标准对话框如下:


2.4.1 消息对话框 QMessageBox

        消息对话框是应用程序中最常用的界面元素。消息对话框主要用于为用户提示重要信息,强制用户进行选择操作。

        QMessageBox 类中定义了静态成员函数,可以直接调用创建不同风格的消息对话框,其中包括:

其对应的函数原型如下:


实现一个警告提示信息对话框:

实现效果如下:

其中可以设置的按钮的类型如下:

更改消息对话框中的按钮类型:

实现效果如下:

类似的,问题(Question)/ 信息(Information)/ 错误(Critical)提示对话框效果图如下:


2.4.2 颜色对话框 QColorDialog

Qt QColorDialog 的功能就是内置了调色板,效果和下面看到的画图板的调色板非常类似。

颜色对话框的功能是允许用户选择颜色。继承自 QDialog 类。颜色对话框如下图示:

常用方法介绍:

创建对象的同时设置父对象:

QColorDialog (QWidget *parent = nullptr)

创建对象的同时通过 QColor 对象设置默认颜色和父对象:

QColorDialog(const QColor &initial, QWidget *parent = nullptr)

设置当前颜色对话框:

void setCurrentColor(const QColor &color)

获取当前颜色对话框:

QColor currentColor() const

打开颜色,选择对话框,并返回一个QColor对象:
QColor getColor(const QColor &initial = Qt::white, QWidget *parent = nullptr, const QString &title = QString(), QColorDialog::ColorDialogOptions options = ColorDialogOptions())

参数说明:

  • initial:设置默认颜色
  • parent:设置父对象
  • title:设置对话框标题
  • options:设置选项

    打开颜色对话框:

    void open(QObject *receiver, const char *member)

    修改窗口的背景色,操作示例:

    效果如下:


    2.4.3 文件对话框 QFileDialog

    文件对话框用于应用程序中需要打开一个外部文件或需要将当前内容存储到指定的外部文件。

    常用方法介绍:

    打开文件(一次只能打开一个文件)
    QString getOpenFileName (QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options())

    打开多个文件(一次可以打开多个文件)
    QStringList getOpenFileNames (QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options())

    保存文件
    QString getSaveFileName (QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options())

      参数说明:

      • 参数 1:parent 父亲
      • 参数 2:caption 对话框标题
      • 参数 3:dir 默认打开的路径
      • 参数 4:filter 文件过滤器

      打开和保存文件,操作示例:

      这里的打开 / 保存功能都是需要额外去实现的,并不是说按了打开 / 保存就真的打开 / 保存了。

      运行效果:


      2.4.4 字体对话框 QFontDialog

      Qt 中提供了预定义的字体对话框类 QFontDialog,用于提供选择字体的对话框部件。

      示例:

      运行效果如下:


      2.4.5 输入对话框 QInputDialog

      Qt 中提供了预定义的输入对话框类:QInputDialog,用于进行临时数据输入的场合。

      常用方法介绍:

      双精度浮点型输入数据对话框
      double getDouble (QWidget *parent, const QString &title, const QString &label, double value = 0, double min = -2147483647, double max = 2147483647, int decimals = 1, bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags());

      整型输入数据对话框
      int getInt (QWidget *parent, const QString &title, const QString &label, int value = 0, int min = -2147483647, int max = 2147483647, int step = 1, bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags());

      选择条目型输入数据框
      QString getItem (QWidget *parent, const QString &title, const QString &label, const QStringList &items, int current = 0, bool editable = true, bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags(), Qt::InputMethodHints inputMethodHints = Qt::ImhNone) ;

      参数说明:

      • parent:父亲
      • title:对话框标题
      • label:对话框标签
      • items:可供选择的条目

      整型数据输入对话框

      运行效果:


      浮点型数据输入对话框

      运行效果:


      打开选择条目对话框

      运行效果:


      本篇完。

      下一篇是Qt开发⑨Qt的事件_事件处理_按键事件和鼠标事件。

      qt实现悬浮窗口(附完整源码) 阅读详情

      相关推荐

      基于QT实现的悬浮窗体

      基于QT实现的悬浮窗体,采用该QML实现的

      Qt停靠/浮动窗口的使用以及保存修改后的记录

      停靠窗口(dock window)是指一些可以停靠在 OMainWindow 中或是浮动为独立窗口的窗口。OMainWindow提供了4个停靠窗口区域分别在中央窗口部件的上部、下部、左侧和

      林夕07 2302

      Qt悬浮窗口

      试着用Qt简单模拟了一个悬浮气泡。挺简单的,首先是窗口去边框,背景透明,然后重写窗口拖拽功能,最后用事件过滤器实现边缘黏滞效果

      【Qt 学习笔记】Qt窗口 | 浮动窗口 | QDockWidget的使用及说明

      浮动窗口是计算机图形界面中一种常见的窗口类型,它可以悬浮在其他窗口之上并且可以自由移动。浮动窗口通常被用于显示一些特定的信息或功能,例如实时监测数据、通知消息、弹出菜单等。浮动窗口可以在屏幕上的任何位置出现,用户可以根据需要将其拖动到合适的位置。QDockWidget是Qt中的一个窗口部件,它提供了一个可停靠的面板,可用于显示和编辑各种内容。QDockWidget可以在主窗口中创建并停靠在不同的位置,如左侧、右侧、顶部或底部。它可以通过拖动和放置的方式来改变其位置和大小。

      小黄鸭的博客 3540

      适合初学者的ROS机器人教程(1): Ubuntu下ROS创建自己的包和使用github下载的包

      ROS如何创建自己的包 1. 首先创建catkin工作空间(如果你以及有了请忽略) $ mkdir catkin_ws # 创建一个文件夹里面计划放我们的项目,ws是workspace的缩写 $ cd catkin_ws # 将当前工作文件夹切换到catkin_ws这个文件夹 ~/catkin_ws$ catkin_make # 执行catkin_make创建一ROS项目 此时你的catkin_...

      @司南牧|知乎|博客|易懂教程|李韬 3244

      干扰管理学习日志4-------信道估计方法 LS(最小二乘)、MMSE(最小均方误差)

      信道估计,就是从接收数据中将假定的某个信道模型的模型参数估计出来的过程。如果信道是线性的话,那么信道估计就是对系统冲激响应进行估计。需强调的是信道估计是信道对输入信号影响的一种数学表示,而“好”的信道估计则是使得某种估计误差最小化的估计算法。本文主要讲述非盲信道估计中的LS估计和MMSE估计。LS全称为,即估计的信道参数与实际信道参数的差,进行平方求和后得到的误差累积最小。MMSE估计是LS估计的改进,在LS估计的最终结果的基础上乘以加权矩阵,使之与实际信道参数更为接近。

      taiyuezyh的博客 1万+

      【QT】Qt窗口组成和初识对话框

      对于qt主要窗口构建的相关知识点

      s_little_monster的博客 9283

      避开这5个坑!用MATLAB做核密度估计时90%人会犯的错误

      本文详细解析了使用MATLAB进行核密度估计时常见的5个高频错误,包括三维数据可视化、带宽参数优化、大数据量处理、核函数选择及版本兼容性问题。特别针对核密度估计中的关键参数带宽(bandwidth)提供了数据驱动的优化策略,帮助用户提升分析精度与效率。

      jenkins8butler的博客 277

      【Qt】深入探索Qt窗口与对话框:从创建到管理:QDockWidget(浮动窗口)、QDialog(对话框)

      在现代软件开发中,图形用户界面(GUI)的设计和实现是至关重要的一环。Qt,作为一个功能强大且跨平台的C++图形用户界面库,提供了丰富的组件和工具,使得开发者能够快速构建具有专业外观和感觉的应用程序。本文将深入探讨Qt中窗口和对话框的创建与管理,包括浮动窗口、对话框的介绍、模态与非模态对话框的区别,以及Qt内置的多种对话框类型。通过详细的代码示例和解释,本文旨在帮助Qt开发者更好地理解和应用这些GUI组件,以提升应用程序的用户体验和交互性。对话框是 GUI 程序中不可或缺的组成部分。

      Colorful___的博客 2348

      雷光联动自动化标校方法

      动态标校需要利用动目标,在雷达和光电同时看到目标时记录光电的方位、俯仰,以及利用雷达给的目标信息计算的方位俯仰,手动记录两者的数值,多方位,多距离段记录,费时费力,且人工记录数据不全,计算容易出差错,耗费成本和精力太大。目标相距设备的水平距离 = acos(cos(设备纬度弧度值) * cos(目标纬度弧度值) * cos(设备经度弧度值 – 目标经度弧度值) + sin(设备纬度弧度值) * sin(目标纬度弧度值)) * 6378137;本发明涉及光电技术领域,安防领域,尤其涉及雷达光电动态标校等。

      u013358093的博客 1580

      超速U盘选购避坑指南:如何通过Rx Detect机制识别真伪USB3.0设备

      本文深入解析了USB 3.0超速U盘的选购避坑要点,重点介绍了通过Rx Detect机制识别真伪设备的核心原理。文章提供了从软件检测到实际性能测试的完整方案,帮助消费者和技术人员有效辨别虚假的USB3.0设备,确保获得真正的超速传输体验。

      weixin_29189373的博客 444

      【QT】Qt 窗口 (QMainWindow)

      QMainWindow 是一个为用户提供主窗口程序的类,继承自 QWidget 类,并且提供了一个预定义的布局。QMainWindow 包含一个菜单栏(menu bar)、多个工具栏(tool bars)、多个浮动窗口(铆接部件)(dock widgets)、⼀个状态栏(status bar) 和⼀个 中心部件(central widget),它是许多应用程序的基础,如文本编辑器,图片编辑器等。

      YoungMLet的博客 3467

      从勒索软件攻击到数据重生:SQL Server MDF文件修复的实战生存指南

      本文详细介绍了SQL Server MDF文件在遭遇勒索软件攻击后的修复策略,重点解析了Recovery Toolbox工具链的应用流程。从灾难评估到数据验证,提供分阶段修复操作、高级修复技术及防御加固方案,帮助企业快速恢复数据库并提升安全防护能力。

      weixin_28327051的博客 715

      【Qt开发】Qt窗口(五) -> 非模态/模态对话框

      本文对比分析了Qt中的模态对话框和非模态对话框的特性与应用。模态对话框采用阻塞式交互,强制用户完成当前任务,适用于关键操作确认和重要决策场景;非模态对话框则支持并行操作,适用于工具面板和进度显示等辅助功能。文章从行为机制、内存管理、用户体验等维度深入比较两者的差异,并提供了代码示例和设计最佳实践,帮助开发者根据具体需求合理选择对话框类型,以优化用户交互体验。

      枫叶丹4的博客 2385

      多电平双向DC/DC直流变换器的工作原理(以三电平为例子)

      多电平双向DCDC变换器的工作原理一、所用论文和参考文献1.1 主要是中文的文献二、工作原理和重要概念2.1 飞跨电容的作用2.2 三电平的工作原理1.3 多电平的优点二,一些注意点2.1 电感电流的变化2.2 多飞跨电容 多余三个电平的时候的解释(截图居多) 一、所用论文和参考文献 1.1 主要是中文的文献 用于超级电容储能系统的三电平双向直流变换器及其控制 (期刊) 多电平直流变换器及其控制...

      qq_32419593的博客 2万+

      jira的详细使用教程

      ​jira的详细使用教程,1,Jira- 是一款缺陷管理软件工具,用其进行缺陷的管理和跟踪。(是B/S架构的软件) 2,主要涉及的角色: 3,具体工作流 添加工作流 1.点击项目设置

      计算机毕业论文源码,学生个人网页制作html源码。贴近用户做网络推广和互联网优化。 3295

      Qt窗口与对话框开发指南

      本文介绍了Qt框架中的窗口组件及其实现方式。主要内容包括:1) QMainWindow类作为主窗口的基础,包含菜单栏、工具栏、状态栏等核心组件;2) 菜单栏通过QMenuBar实现,支持添加菜单项和分割线;3) 工具栏通过QToolBar创建,可设置停靠位置和浮动属性;4) 状态栏用于显示程序状态信息;5) 对话框分为模态和非模态两种,详细介绍了Qt内置的文件、颜色、字体等标准对话框的使用方法。文章通过代码示例展示了各类组件的具体实现方式,为Qt界面开发提供了实用参考。

      2301_79420799的博客 1073

      数学建模模型总结

      这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

      【QT】常⽤控件详解(八) Qt窗⼝ &&菜单栏 && 工具栏 &&状态栏 && 浮动窗口 && 五种内置对话框

      本文介绍了Qt中的窗口和菜单栏实现方法。主要内容包括: Qt窗口通过QMainWindow类实现,它提供了预定义的布局结构,包含菜单栏、工具栏、浮动窗口、状态栏和中心部件等组件。 菜单栏使用QMenuBar类实现,通过menuBar()函数创建并添加到主窗口。一个主窗口最多只能有一个菜单栏。 在菜单栏中添加菜单使用QMenu类,通过addMenu()函数实现。菜单中可以添加菜单项(QAction)和分隔线(addSeparator)。 提供了完整的示例代码,展示了如何创建主窗口、添加菜单栏、创建菜单和菜单项

      a_sen的博客 952

      假人有限元模型

      假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

      IEM模型,地表粗糙度模拟

      利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

      【Qt】窗口

      Qt窗口的使用,以及各种对话框(消息,颜色,文件,字体等)

      qq_55829345的博客 1645

      visio安装包

      Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

      【QT】窗口(菜单栏、工具栏、状态栏、浮动窗口、对话框)

      菜单栏、工具栏、状态栏、浮动窗口、对话框

      2301_82256131的博客 808

      【Qt】Qt窗口----菜单栏、工具栏、浮动窗口、状态栏、对话框

      【Qt】Qt窗口----菜单栏、工具栏、浮动窗口、状态栏、对话框

      2402_84357324的博客 963

      QT跨平台应用程序开发框架(10)—— Qt窗口

      Qt 中的菜单栏通过 QMenuBar 这个类来实现,并且一个主窗口最多只能有一个菜单栏,下面是Qt的菜单栏:工具栏里的选项也叫做 QAction,因为前面说过,工具栏本质是菜单栏一些功能的快捷选项对话框是 GUI 程序中不可或缺的部分,往往是程序与用户之间进行“短平快” 的操作Qt 中使用 QDialog 类表示对话框,通常是一个顶层窗口,出现在程序最上层,用于实现短期热内或者简洁的用户交互。

      aaqq800520的博客 1207

      Qt - 窗口

      Qt窗口时通过QMainWindow类来实现的。QMainWindow是一个为用户提供主窗口程序的类,继承自QWidget类,并且提供了一个预定义的布局。QMainWindow包含一个菜单栏(menu bar),多个工具栏(tool bars), 多个浮动窗口(dock widgets),一个状态栏(status bar)和一个中心部件(central widget),它是许多应用程序的基础,如文本编辑器,图片编辑器等。如下图为QMainWindow中各组件所处的位置。

      weixin_73888239的博客 1607

      【Qt】Qt窗口

      💬 hello!各位铁子们大家好哇。今日更新了Qt窗口的内容Qt 窗口 是通过 QMainWindow类 来实现的。QMainWindow 是一个为用户提供主窗口程序的类,继承自 QWidget 类,并且提供了一个预定义的 布局。

      qinjh_的博客 2249

      Qt开发——Qt窗口

      本文介绍了Qt中主窗口QMainWindow及其组件的使用方法。主要包括:1. QMainWindow的基本结构,包含菜单栏、工具栏、状态栏和中心部件;2. 菜单栏的创建和使用方法,包括通过代码和图形化界面创建菜单、添加菜单项、设置快捷键等;3. 工具栏的创建和设置,包括添加工具按钮、设置停靠区域和浮动属性;4. 状态栏的使用,包括显示消息和添加控件;5. 浮动窗口QDockWidget的创建和控件添加;6. 对话框的使用,包括自定义对话框和Qt内置对话框(消息框、颜色选择、文件选择、字体选择和输入对话框)

      m0_74515566的博客 1079

      QT第四课------QT窗口

      我们可以自己写一个对话框,继承于QDialog一般有两种方式, 一种是纯代码的方式, 一种是界面操作(ui文件)我们创建一个类如下是我创建的类代码:.hQ_OBJECT//可以关联信号和槽public:private:.cpp//创建布局//创建标签QLabel * label = new QLabel("这个一个标签");//创建按钮QPushButton * button = new QPushButton("按钮");//添加进去。

      m0_69984273的博客 1393
      上一篇: Redis存储​⑫​哨兵Sentinel_高可用实现方案
      下一篇: Redis存储⑬Redis集群_扩展存储空间
      GR鲸鱼
      GR鲸鱼 新星创作者: C/C++技术领域 新星创作者: C/C++技术领域
      博客等级 码龄4年 6227粉丝 228原创
      评论
      成就一亿技术人!
      拼手气红包6.0元
      还能输入1000个字符
       
       条评论被折叠 查看
      添加红包

      请填写红包祝福语或标题

      个

      红包个数最小为10个

      元

      红包金额最低5元

      当前余额3.43元 前往充值 >
      需支付:10.00元
      成就一亿技术人!
      领取后你会自动成为博主和红包主的粉丝 规则
      hope_wisdom
      发出的红包

      打赏作者

      GR鲸鱼

      你的鼓励将是我创作的最大动力

      ¥1 ¥2 ¥4 ¥6 ¥10 ¥20
      扫码支付:¥1
      获取中
      扫码支付

      您的余额不足,请更换扫码支付或充值

      打赏作者

      实付元
      使用余额支付
      点击重新获取
      扫码支付
      钱包余额 0

      抵扣说明:

      1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
      2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

      余额充值