Qt桌面应用开发 第四天(对话框 界面布局)

server/2024/11/19 7:20:23/

目录

1.对话框

1.1模拟对话框

1.2非模拟对话框

1.3消息对话框

1.3.1询问对话框

1.3.2严重错误对话框

1.3.3信息提示对话框

1.3.4警告对话框

1.4其他对话框

1.4.1颜色对话框

1.4.2文件对话框

1.4.3字体对话框

1.5界面布局


1.对话框

1.1模拟对话框

会阻塞同一应用程序中其他窗口的输入。

创建流程:

  1. 利用QDialog类创建对话框对象
  2. 调用对象的exec()成员函数
//举例:模拟对话框
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);connect(ui->actionnew,&QAction::triggered,[=](){QDialog l(this);l.setWindowTitle("模拟对话框");l.resize(100,80);l.exec();    //会弹出模拟对话框});
}

运行效果:

1.2非模拟对话框

打开非模拟对话框时,可以操作其他窗口。

创建流程:

  1. 利用QDialog类创建对话框对象
  2. 调用对象的show()成员函数
    connect(ui->actionnew,&QAction::triggered,[=](){QDialog* l=new QDialog(this);l->setWindowTitle("非模拟对话框");l->resize(100,80);l->show();//关闭非模拟对话框时,将对话框对象释放l->setAttribute(Qt::WA_DeleteOnClose);});

运行效果:

在上述案例中,对话框创建在堆区,没有释放窗口对象,可以设置属性,在关闭非模拟对话框时,将对话框对象释放;若非模拟对话框创建在栈区,对话框会马上释放

  l->setAttribute(Qt::WA_DeleteOnClose);//55号属性

1.3消息对话框

Qt内置标准对话框:

QMessageBox用于显示消息提示,一般会使用的静态成员函数如下:

1.3.1询问对话框

        connect(ui->actionnew,&QAction::triggered,[=](){if(QMessageBox::Save==QMessageBox::question(this,"询问对话框","是否保存",QMessageBox::Save|QMessageBox::Cancel,QMessageBox::Cancel)){qDebug()<<"选择保存";}else{qDebug()<<"选择取消";}});

运行效果:

1.3.2严重错误对话框
    connect(ui->actionnew,&QAction::triggered,[=](){QMessageBox::critical(this,"严重错误对话框","出错了");});

运行效果:

1.3.3信息提示对话框
    connect(ui->actionnew,&QAction::triggered,[=](){QMessageBox::information(this,"信息提示对话框","小贴士提醒您");});

运行效果:

1.3.4警告对话框
    connect(ui->actionnew,&QAction::triggered,[=](){QMessageBox::warning(this,"警告对话框","注意前方道路");});

运行效果:

1.4其他对话框

1.4.1颜色对话框

QColorDialog::getColor()创建颜色对话框。

    connect(ui->actionnew,&QAction::triggered,[=](){QColor color=QColorDialog::getColor();qDebug()<<color.red()<<color.green()<<color.blue();});

运行效果:

1.4.2文件对话框

QFileDialog::getOpenFileName创建文件对话框。

    connect(ui->actionnew,&QAction::triggered,[=](){//参数:父类窗口,窗口标题,默认的文件路径QString filePath=QFileDialog::getOpenFileName(this,"文件对话框","E:/a");qDebug()<<filePath;});

运行效果:

1.4.3字体对话框
    connect(ui->actionnew,&QAction::triggered,[=](){bool ok;QFont font=QFontDialog::getFont(&ok);qDebug()<<"字体"<<font.family()<<"字号"<<font.pointSize()<<"加粗"<<font.bold()<<"倾斜"<<font.italic()<<"ok"<<ok;});

运行效果:

1.5界面布局

水平布局/垂直布局:

水平弹簧控件/垂直弹簧控件:

页面widget的sizePolicy中的垂直策略fixed,会让窗口高度和控件高度贴合:

运行效果:


http://www.ppmy.cn/server/143111.html

相关文章

安全、便捷、效率高,明达边缘计算网关助力制药装备企业远程调机

随着药厂对设备运维需求的增长&#xff0c;制药装备企业需要在提高运维效率的同时&#xff0c;降低人工及差旅成本。制药装备因其数据具有高度的保密性&#xff0c;要求运维工程师提供安全可靠的远程调试方式。本案例介绍了明达技术MBox20系列5口WIFI通用网关在制药装备上的应用…

【汇编语言】数据处理的两个基本问题(三) —— 汇编语言的艺术:从div,dd,dup到结构化数据的访问

文章目录 前言1. div指令1.1 使用div时的注意事项1.2 使用格式1.3 多种内存单元表示方法进行举例1.4 问题一1.5 问题一的分析与求解1.5.1 分析1.5.2 程序实现 1.6 问题二1.7 问题二的分析与求解1.7.1 分析1.7.2 程序实现 2. 伪指令 dd2.1 什么是dd&#xff1f;2.2 问题三2.3 问…

【头歌实训:循环调度法】

头歌实训&#xff1a;循环调度法 文章目录 任务描述相关知识1. 如何设计一个队列2. C STL的队列容器queue2.1 queue的定义2.2 queue容器内元素的访问输出结果&#xff1a;2.3 queue常用函数实例解析2.4 queue的注意事项2.5 一个完整的队列程序示例 编程要求输入:输出:限制:输入…

原生微信小程序做视频和图片上传wx.chooseMedia({})

原来的旧的方法已经被遗弃&#xff0c;现在最新上传视频和图片的方法用的是wx.chooseMedia({})&#xff0c;共同用这个方法&#xff0c;参数不一样&#xff1b; code&#xff1a; wxml&#xff1a; <!-- 上传图片 --> <view class"upload-box" bindtap&quo…

Java项目实战II基于Java+Spring Boot+MySQL的共享汽车管理系统(源码+数据库+文档)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 在共享经济…

数据分析-50-时间序列信息编码之采用正余弦循环编码

文章目录 1 基本概念1.1 虚拟变量的缺点1.2 循环编码原理2 模拟数据2.1 日期序列2.2 目标序列3 编码循环变量3.1 按月划分周期3.2 按天划分周期3.3 正余弦散点图4 拟合模型4.1 构建数据集(每月编码)4.2 构建数据集(每日编码)5 参考附录1 基本概念 1.1 虚拟变量的缺点 因为时间…

c# npoi操作excel

今天在弄使用npoi对excel表的操作&#xff0c;遇到个问题就是使用workbook通过filestream打开后&#xff0c;让后workbook.write(filestream)居然报文件流关闭了&#xff0c;无法写入&#xff0c;弄了好久都不行&#xff0c;最后通过写2个excel文件来解决&#xff0c;现在看来我…

工具类-基于 axios 的 http 请求工具 Request

基于 axios 的 http 请求工具 基于 axios 实现一个 http 请求工具&#xff0c;支持设置请求缓存和取消 http 请求等功能 首先实现一个 简单的 http 请求工具 import axios, {AxiosError,AxiosInterceptorManager,AxiosRequestConfig,AxiosResponse, } from axios;// 接口返回…