lv21 QT对话框3

1 内置对话框

标准对话框样式

内置对话框基类        

QColorDialog,
QErrorMessage
QFileDialog
QFontDialog
QInputDialog
QMessageBox
QProgressDialog

QDialog Class帮助文档 

示例:各按钮激发对话框实现基类提供的各效果

第一步:实现组件布局()

第二步:实现信号与槽函数

 文件静态成员方法 

打印实现使用qdebug

代码:

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QPushButton>
#include <QTextEdit>#include<QColorDialog>
#include<QErrorMessage>
#include<QFileDialog>
#include<QFontDialog>
#include<QInputDialog>
#include<QMessageBox>
#include<QProgressDialog>#include <QDebug>class Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = 0);~Widget();
public slots:void setcolorf(){QColor c =  QColorDialog::getColor();te->setTextColor(c);}void showerr(){QErrorMessage *msg = QErrorMessage::qtHandler();msg->showMessage("EEEEEEEE");}void getfile(){QString filename = QFileDialog::getOpenFileName();qDebug()<<filename;    //qt中打印方法te->setText(filename);}void setfont(){bool ok;QFont myfont = QFontDialog::getFont(&ok);if(ok)te->setFont(myfont);}void getstr(){QString str =  QInputDialog::getText(this, "xxxx","yyyyy");te->setText(str);}void showmsg(){QMessageBox::information(this, "vvvv", "hello", "AAA");}void showprogress(){QProgressDialog p;p.setValue(50);p.exec();}private:QPushButton *btcolor;QPushButton *bterrm;QPushButton *btfile;QPushButton *btfont;QPushButton *btinput;QPushButton *btmsg;QPushButton *btprg;QTextEdit *te;};#endif // WIDGET_H
#include "widget.h"
#include "QVBoxLayout"
#include "QHBoxLayout"Widget::Widget(QWidget *parent): QWidget(parent)
{btcolor = new QPushButton("setcolor");bterrm = new QPushButton("errmsg");btfile = new QPushButton("getfile");btfont = new QPushButton("setfont");btinput = new QPushButton("getstr");btmsg = new QPushButton("msg");btprg = new QPushButton("progress");te = new QTextEdit;QVBoxLayout *vbox = new QVBoxLayout;vbox->addWidget(btcolor);vbox->addWidget(bterrm);vbox->addWidget(btfile);vbox->addWidget(btfont);vbox->addWidget(btinput);vbox->addWidget(btmsg);vbox->addWidget(btprg);QHBoxLayout *mainbox = new QHBoxLayout;mainbox->addLayout(vbox);mainbox->addWidget(te);this->setLayout(mainbox);connect(btcolor, SIGNAL(clicked(bool)), this, SLOT(setcolorf()));connect(bterrm, SIGNAL(clicked(bool)), this, SLOT(showerr()));connect(btfile, SIGNAL(clicked(bool)), this, SLOT(getfile()));connect(btfont, SIGNAL(clicked(bool)), this, SLOT(setfont()));connect(btinput, SIGNAL(clicked(bool)), this, SLOT(getstr()));connect(btmsg, SIGNAL(clicked(bool)), this, SLOT(showmsg()));connect(btprg, SIGNAL(clicked(bool)), this, SLOT(showprogress()));}Widget::~Widget()
{}

2 自定义对话框 

现象:模态显示,前面不关后面不关,小框可以卡其后面的态

有时候对于弹出对话框可以点确定关闭,可以点X全部关闭,那么这时候需要实现自定义对话框 

 添加新文件,添加C++

文件添加 姓名,基类

生成myQdialog的cpp和.h文件,需要用到信号与槽,Q_OBJEC

myqdialog.h

#ifndef MYQDIALOG_H
#define MYQDIALOG_H#include <QDialog>
#include <QLineEdit>
#include <QPushButton>class myQDialog : public QDialog
{Q_OBJECT
public:myQDialog();public slots:void ok_pushed(){stat = true;close();}public:static int getstat(){myQDialog a;a.exec();return a.stat;}private:QLineEdit *le;QPushButton *pb;int stat;
};#endif // MYQDIALOG_H

myqdialog.cpp

#include "myqdialog.h"
#include <QVBoxLayout>myQDialog::myQDialog()
{le = new QLineEdit("aaaaaa");pb = new QPushButton("OK");QVBoxLayout *vbox = new QVBoxLayout;vbox->addWidget(le);vbox->addWidget(pb);setLayout(vbox);stat = false;connect(pb, SIGNAL(clicked(bool)), this, SLOT(ok_pushed()));
}

widget.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>class Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = 0);~Widget();
};#endif // WIDGET_H

 widget.cpp

#include "widget.h"
#include <QWidget>
#include <QDialog>
#include "myqdialog.h"Widget::Widget(QWidget *parent): QWidget(parent)
{
#if 0myQDialog a;a.setFixedSize(100, 100);a.exec();if(!a.stat)exit(0);#endifint s = myQDialog::getstat();if(!s)exit(0);
}Widget::~Widget()
{}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/498028.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

通过elementUI学习vue

<template><el-radio v-model"radio" label"1">备选项</el-radio><el-radio v-model"radio" label"2">备选项</el-radio> </template><script>export default {data () {return {radio: 1}…

spring boot整合cache使用memcached

之前讲了 spring boot 整合 cache 做 simple redis Ehcache 三种工具的缓存 上文 windows系统下载安装 memcached 我们装了memcached 但spring boot没有将它的整合纳入进来 那么 我们就要自己来处理客户端 java历史上 有过三种客户端 那么 我们用肯定是用最好的 Xmemcached …

mongo之常用数据库操作

目录 一、准备环境 二、日常记录及执行示范 连接数据库查询版本查询表总数模糊查询(使用正则)查询文档中数据条数排序大于等于查询有哪些库时间查询不在条件内的查询复制数据更新字段名称删除数据库 四、高阶查询 五、备份迁移数据库 总结 一、准备环境 借鉴&#xff1a;…

Vue的生命周期函数

今天我们来讲一讲Vue中的生命周期函数 每个Vue实例在其生命周期中都会经历多个关键阶段&#xff0c;这些阶段包括数据监听设置、模板编译、实例DOM挂载以及数据变化时的DOM更新等。同时&#xff0c;Vue提供了一系列生命周期钩子函数&#xff0c;允许开发者在这些重要阶段插入自…

leetcode:135.分发糖果

解题思路&#xff1a;分发糖果时&#xff0c;既要考虑左面&#xff0c;又要考虑右面&#xff0c;如果同时考虑&#xff0c;就会顾此失彼&#xff0c;所以我们可以先考虑右边&#xff0c;再考虑左边&#xff0c;分别正序、逆序进行遍历。逆序遍历时相当于重置candy数组。 运用贪…

Python + Google AI 自动修复 Sonar Bug 实践

前言 在工作中总会遇到种种不期而至的需求&#xff0c;比如前段时间突然要修复所有 Sonar Bug&#xff0c;涉及各种琐碎的代码风格问题&#xff0c;包括但不限于语法不规范、废弃注释等问题。这些项目都已经持续开发几年了&#xff0c;Sonar 上的问题层出不穷&#xff0c;各种…

《汇编语言》- 读书笔记 - 第13章-int 指令

《汇编语言》- 读书笔记 - 第13章-int 指令 13.1 int 指令13.2 编写供应用程序调用的中断例程中断例程&#xff1a;求一 word 型数据的平方主程序中断处理程序执行效果 中断例程&#xff1a;将一个全是字母&#xff0c;以0结尾的字符串&#xff0c;转化为大写主程序中断处理程序…

【Oracle】玩转Oracle数据库(七):RMAN恢复管理器

前言 嘿&#xff0c;数据库大魔法师们&#xff01;准备好迎接新的技术大招了吗&#xff1f;今天我们要探索的是Oracle数据库中的神奇利器——RMAN恢复管理器&#xff01;&#x1f6e1;️&#x1f4be; 在这篇博文【Oracle】玩转Oracle数据库&#xff08;七&#xff09;&#xf…

实验笔记之——Ubuntu20.04配置nvidia以及cuda并测试3DGS与SIBR_viewers

之前博文测试3DGS的时候一直用服务器进行开发&#xff0c;没有用过笔记本&#xff0c;本博文记录下用笔记本ubuntu20.04配置过程&#xff5e; 学习笔记之——3D Gaussian Splatting源码解读_3dgs运行代码-CSDN博客文章浏览阅读3.2k次&#xff0c;点赞34次&#xff0c;收藏62次…

5.WEB渗透测试-前置基础知识-常用的dos命令

内容参考于&#xff1a; 易锦网校会员专享课 上一篇内容&#xff1a;4.WEB渗透测试-前置基础知识-快速搭建渗透环境&#xff08;下&#xff09;-CSDN博客 常用的100个CMD指令 1.gpedit.msc—–组策略 2. sndrec32——-录音机 3. Nslookup——-IP地址侦测器 &#xff0c;是一个…

★【递归】【链表】Leetcode 21. 合并两个有序链表

★【递归】【链表】Leetcode 21. 合并两个有序链表 解法1 &#xff1a;递归链表 简直是好题啊好题多做做 ---------------&#x1f388;&#x1f388;题目链接&#x1f388;&#x1f388;------------------- 解法1 &#xff1a;递归链表 简直是好题啊好题多做做 >>>…

Tomcat架构分析

Tomcat的核心组件 Tomcat将请求器和处理器分离&#xff0c;使用多种请求器支持不同的网络协议&#xff0c;而处理器只有一个。从而网络协议和容器解耦。 Tomcat的容器 Host&#xff1a;Tomcat提供多个域名的服务&#xff0c;其将每个域名都视为一个虚拟的主机&#xff0c;在…