在Qt中如何实现窗口交互

2023-11-19

首先介绍done函数,它的作用是:关闭当前窗口,同时返回一个状态信息。
Qt助手解释:关闭对话框并将其结果代码设置为r。如果这个对话框显示了exec(), done()导致本地事件循环结束,exec()返回r。

void QDialog::done(int r);
r 有两个状态 AcceptedRejected

例子如下:

main函数:

模态对话框:就是与用户交互,用户需要给一个反应(点击取消,确定等等这些操作),若用户不关闭对话框那么对话框就会一直阻塞(停留在交互模式下)直到关闭为止。并且不能与同一应用程序中的任何其他窗口交互,直到关闭对话框。

解释main函数:当第一个对话框以模态方式创建后,会阻塞等待交互回应,我在第一个对话框使用了两个按钮来测试,确定和取消按钮,点击确定后会关闭当前对话框并返回Accepted,点击取消后会关闭当前对话框并返回Rejected,并赋值给res。

当res 等于Rejected会直接结束程序,并在应用程序输出中打印‘失败’。
当res 等于Accepted会创建出第二个窗口,并在应用程序输出中打印‘TwoDialog构造成功!’。
在这里插入图片描述

第一个窗口

这是第一个对话框,我在里面添加了两个按钮,确定和取消。
我分别在这两个按钮的点击事件中添加了done()函数,确定中设置的是Accepted状态,而取消中设置的是Rejected状态。
当我点击确定的时候,当前对话框会被关闭,并且main函数中的res就会接收到Accepted值,此时会打开(创建)第二个对话框。点击取消就会是Rejected。
在这里插入图片描述
第一个窗口实现代码:

Exam::Exam(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Exam)
{
    ui->setupUi(this);

    m_label = new QLabel(this);
    m_label->setText("这是第一个对话框");

    QFont f;
    f.setPointSize(20);
    m_label->setFont(f);
}

Exam::~Exam()
{
    delete ui;
}

void Exam::on_pushButton_clicked()
{
    done(Accepted);     //关闭当前窗口,同时以接受状态返回
}

void Exam::on_pushButton_2_clicked()
{
    done(Rejected);     //关闭当前窗口,同时以取消状态返回
}
第二个窗口

当我在第一个对话框点击确定按钮的时候,会关闭第一个对话框,打开第二个对话框,如下:
在这里插入图片描述
第二个窗口实现代码:

TwoDialog::TwoDialog(QWidget *parent)
    : QDialog(parent)
{
    m_label = new QLabel(this);

    resize(500, 600);
    QFont f;
    f.setPointSize(18);
    m_label->setFont(f);

    m_label->setText("我是第二个窗口");
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Qt中如何实现窗口交互 的相关文章

  • 结构化绑定中缺少类型信息

    我刚刚了解了 C 中的结构化绑定 但有一件事我不喜欢 auto x y some func is that auto正在隐藏类型x and y 我得抬头看看some func的声明来了解类型x and y 或者 我可以写 T1 x T2 y
  • 如何在 Cassandra 中存储无符号整数?

    我通过 Datastax 驱动程序在 Cassandra 中存储一些数据 并且需要存储无符号 16 位和 32 位整数 对于无符号 16 位整数 我可以轻松地将它们存储为有符号 32 位整数 并根据需要进行转换 然而 对于无符号 64 位整
  • 机器Epsilon精度差异

    我正在尝试计算 C 中双精度数和浮点数的机器 epsilon 值 作为学校作业的一部分 我在 Windows 7 64 位中使用 Cygwin 代码如下 include
  • std::list 线程push_back、front、pop_front

    std list 线程安全吗 我假设不是这样 所以我添加了自己的同步机制 我认为我有正确的术语 但我仍然遇到问题 每个函数都由单独的线程调用 Thread1 不能等待 它必须尽可能快 std list
  • 无限循环与无限递归。两者都是未定义的吗?

    无副作用的无限循环是未定义的行为 看here https coliru stacked crooked com view id 24e0a58778f67cd4举个例子参考参数 https en cppreference com w cpp
  • 对类 static constexpr 结构的未定义引用,g++ 与 clang

    这是我的代码 a cp p struct int2 int x y struct Foo static constexpr int bar1 1 static constexpr int2 bar2 1 2 int foo1 return
  • C# 列表通用扩展方法与非通用扩展方法

    这是一个简单的问题 我希望 集合类中有通用和非通用方法 例如List
  • 如何获取 EF 中与组合(键/值)列表匹配的记录?

    我有一个数据库表 其中包含每个用户 年份组合的记录 如何使用 EF 和用户 ID 年份组合列表从数据库获取数据 组合示例 UserId Year 1 2015 1 2016 1 2018 12 2016 12 2019 3 2015 91
  • 为什么这个字符串用AesCryptoServiceProvider第二次解密时不相等?

    我在 C VS2012 NET 4 5 中的文本加密和解密方面遇到问题 具体来说 当我加密并随后解密字符串时 输出与输入不同 然而 奇怪的是 如果我复制加密的输出并将其硬编码为字符串文字 解密就会起作用 以下代码示例说明了该问题 我究竟做错
  • 如何定义一个可结构化绑定的对象的概念?

    我想定义一个concept可以检测类型是否T can be 结构化绑定 or not template
  • 为什么 C# 2.0 之后没有 ISO 或 ECMA 标准化?

    我已经开始学习 C 并正在寻找标准规范 但发现大于 2 0 的 C 版本并未由 ISO 或 ECMA 标准化 或者是我从 Wikipedia 收集到的 这有什么原因吗 因为编写 审查 验证 发布 处理反馈 修订 重新发布等复杂的规范文档需要
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • LINQ:使用 INNER JOIN、Group 和 SUM

    我正在尝试使用 LINQ 执行以下 SQL 最接近的是执行交叉联接和总和计算 我知道必须有更好的方法来编写它 所以我向堆栈团队寻求帮助 SELECT T1 Column1 T1 Column2 SUM T3 Column1 AS Amoun
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • C# 中最小化字符串长度

    我想减少字符串的长度 喜欢 这串 string foo Lorem ipsum dolor sit amet consectetur adipiscing elit Aenean in vehicula nulla Phasellus li
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • C++ 中的参考文献

    我偶尔会在 StackOverflow 上看到代码 询问一些涉及函数的重载歧义 例如 void foo int param 我的问题是 为什么会出现这种情况 或者更确切地说 你什么时候会有 对参考的参考 这与普通的旧参考有何不同 我从未在现
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l
  • 类型或命名空间“MyNamespace”不存在等

    我有通常的类型或命名空间名称不存在错误 除了我引用了程序集 using 语句没有显示为不正确 并且我引用的类是公共的 事实上 我在不同的解决方案中引用并使用相同的程序集来执行相同的操作 并且效果很好 顺便说一句 这是VS2010 有人有什么
  • Mono 应用程序在非阻塞套接字发送时冻结

    我在 debian 9 上的 mono 下运行一个服务器应用程序 大约有 1000 2000 个客户端连接 并且应用程序经常冻结 CPU 使用率达到 100 我执行 kill QUIT pid 来获取线程堆栈转储 但它总是卡在这个位置

随机推荐

  • border之border-style用法

    border style border style 属性用于设置元素所有边框的样式 或者单独地为各边设置边框样式 border style兼容性很好 基本所有浏览器都兼容 border style拥有一下属性值 值 描述 none 定义无边
  • 【RuoYi-Vue-Plus】问题笔记 02 - Knife4j

    文章目录 前言 问题一 文档页面空白 问题二 文档参数无法显示 问题原因 解决方案 前言 今天遇到一个很 sao 不 得 常 一 见 匹 的问题 所以必须要把这部血泪史记录一下 注 因为是开发中的项目 所以适当打码 不影响问题描述 首先描述
  • STM32入门——uKeil5 MDK 的使用(基于固件库)

    文章目录 1 Keil uVision5 MDK 是什么 2 建立一个标准库函数工程 2 1 前期准备 2 2 建立工程 2 3 建立组文件夹 2 4 添加文件 2 4 配置 魔术棒 选项卡 2 5 建立 main 函数 1 Keil uV
  • scala 学习笔记

    Scala Scala 和 java 关系 语言特点 Scala是一门以Java虚拟机 JVM 为运行环境并将面向对象和函数式编程的最佳特性结合在一起的静态类型编程语言 静态语言需要提前编译的如 Java c c 等 动态语言如 js Sc
  • 吴昊品游戏核心算法 Round 10 —— 吴昊教你下围棋(利用递归来解决吃子的问题)...

    如图所示 此即为日本动漫棋魂中的千年佐为 也就是SAI 众所周知 围棋的规则相比于中国象棋 国际象棋等等都简单许多 真是因为更简单的规则 才诞生 了更复杂的逻辑 目前的围棋AI还很不行 最NB的应该是日本人做出的后又经过众多中国的围棋爱好者
  • STM32使用HAL库,整体结构和函数原理介绍

    按照杨桃电子的说法 学习编程程序就是学习使用外设 然后需要在icode文件夹中创建对应的 c和 h文件 分三步来操作 1 学会编写板级驱动程序 2 学会在板级驱动程序中调用HAL库中的功能函数 3 学会在main 主函数中调用板级驱动程序
  • 跟李沐学AI——动手学深度学习 PyTorch版——学习笔记pycharm版本(第四天——10、11、12、13、14)2023.3.1

    前言 这是沐神的第十节课 是讲多层感知机的 需要掌握牢固 以后会经常写的 代码讲解 跳过从零开始实现 直接进入简单代码的讲解 导入包 import torch from torch import nn from d2l import tor
  • Git的基本使用

    Git的基本使用 一 本文主要介绍Git 实现基本的代码托管 适合初次接触Git的开发人员 高级用法请查阅后续文章 目录 Git用途 Git代码托管平台 Git工作流程 概念介绍 工作流程 Git使用步骤 版本管理 分支管理 常用的分支命名
  • 《图解物联网》--阅读笔记

    第1 章物联网的基础知识1 1 1 物联网入门 2 1 1 1 物联网 2 1 1 2 物联网的相关动向 2 1 2 物联网所实现的世界 3 1 2 1 泛在网络 社会 3 1 2 2 物 的互联网连接 4 1 2 3 机器对机器通信所实现
  • Java String类型和BigDecimal类型之间的转化及BigDecimal类型的介绍

    String和BigDecimal的相互转化 String a 50 00 字符串类型 必须是数字 否则会报错 java lang NumberFormatException 异常 BigDecimal b new BigDecimal a
  • 汇编语言有如下的汇编程序段,请完成code段中的代码,实现将string1段和string2段中的数据拷贝到string3段中,并且将string3段中的数据输出到屏幕。

    有如下的汇编程序段 请完成code段中的代码 实现将string1段和string2段中的数据拷贝到string3段中 并且将string3段中的数据输出到屏幕 题目 有如下的汇编程序段 请完成code段中的代码 实现将string1段和s
  • Bose700降噪体验

    戴了多年耳塞 还是决定买一块主动降噪的看看 第一款主动降噪耳机当然选择降噪最强的bose700 直接官方旗舰店买不废话 虽然是主动降噪 不过众所周知是主要降低频部分1KHz以下 所以呢 给小白的用话小白会说 人声 喇叭声 风扇声都是听得到的
  • 学习动态规划-子矩阵

    1 全为1的最大正方形 在一个由 0 和 1 组成的二维矩阵内 找到只包含 1 的最大正方形 并返回其面积 来源 221 最大正方形 解题思路 dp i j 表示以matrix i j 为右下角的全1的正方形的最大边长 很明显 当matri
  • C++ 之 String类详解

    String 小引 string类常用接口 常见构造 容量操作 访问操作 修改操作 string类非成员函数 模拟实现 小引 C语言中 字符串是以 0结尾的一些字符的集合 为了操作方便 C标准库中提供了一些str系列的库函数 但是这些库函数
  • MAC Android Studio 克隆新项目出现问题及解决方法

    目录 前言 重装Android Studio 卸载Android Studio 安装Android Studio 打开新项目 前言 MAC OS 10 15 1 使用Android Studio打开GIT克隆下来的新项目 报错1 Could
  • VS2022 E1696 无法打开源文件报错修改

    1 先检查安装时的配件都安装正确了没有 在工具栏位置打开 获取工具和功能 此时会跳转到我们一开始安装VS时要安装配件的界面 在该界面内 检查是否是 使用C 的桌面开发 的安装选项 如果不是的话就选中该应用并选择下载路径进行修改下载 2 如果
  • C++-std::unique_lock介绍和简单使用

    unique lock std unique lock比std lock guard更灵活 这种灵活性主要体现在以下几点 lock guard在构造时或者构造前 std adopt lock 就已经获取互斥锁 并且在作用域内保持获取锁的状态
  • Linux系统的安装(在VM虚拟机上安装CentOS 7)

    工具准备 物理计算机一台 配置要求 操作系统 win10 64位 大家基本上都是 硬盘可用容量 20G以上 内存容量 4G以上 虚拟机安装包 VMware workstation full 12 5 下载链接 点我下载 提取码 9gha C
  • 为什么程序员招聘都要5年经验起?因为他们懂Java8底层优化!

    一 前情回顾 上篇文章给大家聊了一下volatile的原理 具体参见 入坑两个月自研非外包创业公司 居然让我搞懂了volatile 这篇文章给大家聊一下java并发包下的CAS相关的原子操作 以及Java 8如何改进和优化CAS操作的性能
  • 在Qt中如何实现窗口交互

    首先介绍done函数 它的作用是 关闭当前窗口 同时返回一个状态信息 Qt助手解释 关闭对话框并将其结果代码设置为r 如果这个对话框显示了exec done 导致本地事件循环结束 exec 返回r void QDialog done int