QT/C++——对话框

news2024/11/16 20:37:21

一、标准对话框

#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()
{

}
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include<QColorDialog>
#include<QErrorMessage>
#include<QFileDialog>
#include<QFontDialog>
#include<QInputDialog>
#include<QMessageBox>
#include<QProgressDialog>

#include<QPushButton>
#include <QTextEdit>
#include <QDebug>

class Widget : public QWidget
{
    Q_OBJECT

public:
    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;
        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

对话框就是Dialog,新建工程建成widget了,他就像那种不点关闭或者OK就一直在屏幕上的那种东西。

效果像下面这样

 

我们点击getfile就会弹出这个文件夹选择一个文件

 点击一个文件

点击OK就会把信息显示在对话框里

 

我们随便选择一段话setcolor

 

 

 点击setfont可以设置大小字体什么的

 点击getstr写进一个字符串就会显示在文本框中

 

 msg

 errmsg

 progress

 

二、自定义对话框

#include "widget.h"
#include <QWidget>
#include <QDialog>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    QWidget a;
    a.show();
}

Widget::~Widget()
{

}

用widget的话一闪而过; 

 在dialog中有一个特殊方法

会先弹出一个框框叉掉以后再弹出第二个框框

我们想要自定义一个对话框叫mydialog右键我们的工程文件夹

 

他会为我们生成一个简单的框架我们简单完善一下就可以使用了。

 

Q_OBJECT是Qt中的一个宏。由于Qt的语法是在c++的基础上拓展的,所以在Qt程序的编译过程中,直接用gcc这些标准编译器编译是不可行的,因为gcc不能识别这些拓展性的语法,比如信号和槽(Signal and Slot)。于是Qt引入了moc这一编译器。

moc(Meta-Object Compiler),即元对象编译器,Qt 程序在交由标准编译器编译之前,会使用 moc 分析 C++ 源文件,假设它发现某个头文件中包括了 Q_OBJECT这个宏(注意, moc 只处理头文件中标记了Q_OBJECT的类声明,不会处理 cpp 文件中的类似声明),则会生成另外一个 C++ 源文件,这个源文件里包括了 Q_OBJECT 宏的实现代码,并且文件名称将会是原文件名称前面加上 moc_ 。这个新的文件会和原本的c++源文件一起进入编译系统,最终被链接到二进制代码中完成编译工作。

在Qt中,QObject是所有Qt类的基类,是Qt对象模型的核心,只有继承了QObject类的类,才具有信号槽的能力。所以,为了使用信号槽,必须继承QObject。凡是QObject类(不管是直接子类还是间接子类),都应该在第一行代码写上Q_OBJECT。不管是不是使用信号槽,都应该添加这个宏。这个宏的展开将为我们的类提供信号槽机制、国际化机制以及 Qt 提供的不基于 C++ RTTI 的反射能力。因此,如果你觉得你的类不需要使用信号槽,就不添加这个宏,这是错误的,因为其它很多操作都会依赖于这个宏。
————————————————
版权声明:本文为CSDN博主「LIEYz」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_18998145/article/details/117324209

下面实现一个功能,点OK出现后面的框,点XX结束

#ifndef MYDIALOG_H
#define MYDIALOG_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 // MYDIALOG_H

 

#include "mydialog.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()));
}
#include "widget.h"
#include <QWidget>
#include <QDialog>
#include "mydialog.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
#if 0
    myQDialog a;
    a.setFixedSize(100, 100);
    a.exec();

    if(!a.stat)
        exit(0);

#endif

    int s = myQDialog::getstat();

    if(!s)
          exit(0);
}

Widget::~Widget()
{

}

 这样就实现了一个简单的登录界面

现在什么都实现不了,就只是点OK出现后面的框框

加点东西简单实现的账号密码登录

 

 

源码再我的资源里欢迎下载 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

检索业务:构建结果数据与分析

明确返回的结果对象数据 结果对象 Data public class SearchResult {/*** 查到的所商品信息*/private List<SkuEsModel> products;private Integer pageNum;//当前页面private Long total;//总记录数private Integer totalPages;//总页码private List<CatalogVo&g…

linux安装python3.10.9

Linux系统安装python3.10.9Linux系统安装python3.10.9查看系统自带python信息python官网下载安装包解压安装包上传安装包到服务器解压安装包进入解压后的目录安装python使用的依赖安装python使用的依赖完成编译安装python设置软连接设置python软连接设置pip软连接配置环境变量使…

【Linux】线程概念 | 同步

除了线程互斥&#xff0c;我们还有线程同步&#xff0c;来康康吧 文章目录1.为什么需要同步2.生产消费模型2.1 生产者和消费者的关系2.2 以简单代码为例2.3 并发3.条件变量接口3.1 init/destroy3.2 pthread_cond_wait3.3 pthrea_cond_signal/broadcast3.4 代码示例3.4.1 小bug3…

Python数据可视化(三)绘制统计图形大全

3.1 柱状图以 Python 代码的形式讲解柱状图的绘制原理&#xff0c;这里重点讲解 bar()函数的使用方法。代码&#xff1a;import matplotlib as mpl import matplotlib.pyplot as plt mpl.rcParams["font.sans-serif"]["SimHei"] mpl.rcParams["axes.u…

JavaScript Hashmap散列算法

文章目录前言一、什么是散列表二、为何使用散列算法三、实现散列算法1.字典结构2.散列函数3.put 设置/更新4. 获取值四、使用HashMap处理冲突1.分离链接2.线性探查总结前言 一、什么是散列表 散列表是字典(Dictionary)的一种实现. 集合以[值, 值]形式存储, 字典则以[键, 值]对…

不让袁树雄上春晚,导演于蕾是真英明

自从央视兔年春晚结束后&#xff0c;互联网上面就出现各种吐槽声音&#xff0c;尤其是关于热歌《早安隆回》的话题。说起歌曲《早安隆回》&#xff0c;这是2022年最火的歌曲之一&#xff0c;民间的呼声也一直很高&#xff0c;都希望能够登上央视春晚舞台。 不过随着央视春晚的结…

在甲骨文云容器实例(Container Instances)上部署Alist

在甲骨文云容器实例上部署Oracle Linux 8 Desktop加强版创建容器实例查看容器实例的公共 IP 地址查看密码使用Alist甲骨文云推出了容器实例&#xff0c;这是一项无服务器计算服务&#xff0c;可以即时运行容器&#xff0c;而无需管理任何服务器。今天我们尝试一下通过容器实例部…

数据结构与算法(一)(Python版)

python基础知识整理二 文章目录算法分析运行时间检测大O表示法“变位词”判断问题解法一: O(logn)解法二&#xff1a;暴力法 O(n!)解法三 O(n)Python数据类型的性能示例判断是否是素数求素数个数基本结构——线性结构栈抽象数据类型以及Python实现用Python实现抽象数据结构栈栈…

HQChart实战教程58-K线主图仿tradingview

HQChart实战教程58-K线主图仿tradingview 需求效果图实现思路步骤1. 写透明成交量柱子指标2. 调整成交量柱子和K线图显示区域HQChart插件源码地址完整的demo例子需求 主图K线图和成交量柱子图在一个同窗口显示,柱子图高度为主图窗口高度的1/4,并且成交量柱子图使用透明色 效…

【论文翻译】Deep High-Resolution Representation Learningfor Visual Recognition

目录 摘要 介绍 2.相关工作 3 HIGH-RESOLUTION NETWORKS 3.1 并行多分辨率卷积 3.2 重复的多分辨率融合融合模块 3.3 表示头 3.4实例化 3.5分析 4 人体姿态估计 5语义分割 8.总结 摘要 高分辨率表示对于位置敏感的视觉问题是必不可少的&#xff0c;例如人体姿势估计…

垃圾收集器必问系列—G1

本文已收录至Github&#xff0c;推荐阅读 &#x1f449; Java随想录 人生下来不是为了拖着锁链&#xff0c;而是为了展开双翼。——雨果 文章目录基于Region的堆内存布局可预测的停顿时间模型跨Region引用对象对象引用关系改变运作过程CMS VS G1相关参数Garbage First&#xff…

重要的数据表

重要的数据表目录概述需求&#xff1a;设计思路实现思路分析1.-- 组织结构数据库.参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardness,make a better result,wait for change,challeng…

51单片机学习笔记-6串口通信

6 串口通信 [toc] 注&#xff1a;笔记主要参考B站江科大自化协教学视频“51单片机入门教程-2020版 程序全程纯手打 从零开始入门”。 6.1 串口通信原理 串口是一种应用十分广泛的通讯接口&#xff0c;串口成本低、容易使用、通信线路简单&#xff0c;可实现两个设备的互相通…

层级选择器

<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>层级选择器</title> <style type"text/css"> /*需求&#xff1a;需要选中前三个段落标签*/ /*下面两个选择器之间加…

JavaScript 发布订阅者模式和观察者模式及区别

一、发布订阅模式 发布订阅模式其实是一种对象间一对多的依赖关系&#xff0c;当一个对象的状态发生改变时&#xff0c;所有依赖于它的对象都将得到状态改变的通知。 多方订阅&#xff0c;一方发布&#xff0c;订阅放会收到通知 举例&#xff1a;教学楼中每个教室都有一个广…

Iterator_fail-fast和Iterator_fail-safe~

初识fail-fast&#xff1a; fail-fast 机制是java集合(Collection)中的一种错误机制&#xff0c;当多个线程对同一个集合的内容进行操作时&#xff0c;就可能会产生fail-fast事件&#xff0c;它只是一种错误检测机制&#xff0c;只能被用来检测错误&#xff0c;因为JDK并不保证…

蓝桥杯2022Python组

蓝桥杯2022Python组 1.排列字母 用一个sorted就好了&#xff0c;没啥好说的 s WHERETHEREISAWILLTHEREISAWAY s sorted(s) # 变成列表形式了 print(.join(s))2.寻找整数 这题我刚开始以为答案只能是11和17的倍数&#xff0c;就在他们的倍数里面找&#xff0c;发现不对&…

STL——STL简介、STL六大组件

一、STL是什么 STL(standard template library)&#xff1a; C标准模板库&#xff0c;是C标准库的重要组成部分&#xff0c;不仅是一个可复用的组件库&#xff0c;还是一个包罗数据结构与算法的软件框架。 通俗来讲&#xff1a; STL就是将常见的数据结构&#xff08;顺序表、…

Superset权限管理

文章目录1.Superset角色1&#xff09;Admin2&#xff09;Alpha3&#xff09;Gamma4&#xff09;Sql_lab5&#xff09;Public2.实操自定义授权1&#xff09;权限集2&#xff09;实操1.Superset角色 Superset的默认角色有&#xff1a;Admin、Alpha、Gamma、sql_lab、Public 1&a…

【信息资源建设】

考试分为单选、判断改错、名词解释、简答、综合论述 1.1 如果按价值观念划分&#xff0c;则可将信息分为有用信息和无用信息 信息的特性&#xff1a;普遍性、客观性、时效性、传递性、共享性、变换性、转化性、可伪性。 1.1.2 &#xff08;必考&#xff09;OECD的知识分类…