QT学习笔记(六)——QT弹出对话框并在主窗口调用对话框的信息

47 篇文章 5 订阅
订阅专栏
27 篇文章 2 订阅
订阅专栏
4 篇文章 0 订阅
订阅专栏
这篇博客介绍了如何在Qt环境中创建一个对话框,并在主窗口中使用对话框获取的图像信息。首先新建dialog.ui并使用QTDesigner设计界面,然后创建dialog类并实现槽函数,最后在主窗口类hqMch中添加对话框成员及槽函数,实现在主窗口显示对话框选择的两张图像。遇到的问题是Q_OBJECT宏导致的编译错误,通过修改项目属性解决了问题。
摘要由CSDN通过智能技术生成

QT弹出对话框并在主窗口调用对话框的信息,显示影像

最近封控,大部分时间都在自己学习写代码,有点feel 了哈,自己摸出来一个简单的qt 界面,也实现了自己想要的功能。本篇博客主要记录一下,如何弹出对话框,并在主窗口中利用对话框中的信息。
具体要实现的功能为:
在这里插入图片描述
最终就像下图:
在这里插入图片描述
此前我的几篇笔记已经记录了如何在主窗口中显示两张图像并且图像随滚轮放大缩小的功能。现在就接着上一篇,主要想改进一下打开影像这一步。

1.新建对话框ui

首先新建一个对话框ui,就叫fileDialog.ui吧
在这里插入图片描述
新建完之后,就会发现解决方案管理器里面有它了,双击这个ui,会弹出 QT designer,这个对话框的界面,就在QT designer里面设计吧,只用把左边的控件拖到窗口中的想要的位置中就行了,我这里比较简单,只添加了两个pushbottom和两个Textbrowser。
在这里插入图片描述
右侧的对象查看器和属性可以修改控件的名字,我的控件名如下:
在这里插入图片描述
至此,简单的显示界面就设计好了,下面对两个按钮分别添加槽函数,槽函数的添加可以参考 这个博客
添加完了就如下图所示
在这里插入图片描述
我这里添加的两个按钮点击的槽函数分别是on_FileName_clicked1()和n_FileName_clicked1()
保存并关闭QT designer.
在解决方案管理器中,右键fileDialog.ui,编译。

2.新建对话框类

新建对话框类fileDialog
在fileDialog.h中添加头文件#include “ui_fileDialog.h”,并补充类的变量和槽函数,具体代码为:

#pragma once

#include "ui_fileDialog.h"
#include <QFileDialog>

class fileDialog: public QDialog
{
	Q_OBJECT

public:
	fileDialog();
	~fileDialog();
	Ui::Dialog ui;

private:

private slots://槽函数
	void on_FileName_clicked1();
	void on_FileName_clicked2();
	void on_OK_clicked();
};

NOTE:ui_fileDialog.h头文件里是刚刚在qt designer 里面设计的对话框的代码实现,包含了各个控价的定义以及槽函数的连接。如果不想在qt designer里面设计或者修改,可以直接在这个头文件里进行修改。
对应的cpp文件中添加各个函数的实现

#include "fileDialog.h"

#pragma execution_character_set("utf-8")

fileDialog::fileDialog()
{
    ui.setupUi(this);
   
}
fileDialog::~fileDialog()
{}

void fileDialog::on_FileName_clicked1() {
    QString path = QFileDialog::getOpenFileName(this, tr("选择图像"), ".", tr("Images(*.jpg *.png *.bmp)"));
    if (!path.isEmpty()) {
    	ui.FileName1->clear();
        ui.FileName1->insertPlainText(path);
    }
}

void fileDialog::on_FileName_clicked2() {
    QString path = QFileDialog::getOpenFileName(this, tr("选择图像"), ".", tr("Images(*.jpg *.png *.bmp)"));
    if (!path.isEmpty()) {
    	ui.FileName2->clear();
        ui.FileName2->insertPlainText(path);
    }
}

void fileDialog::on_OK_clicked() {
    this->accept();
  
}

至此,对话框类就写好了。

3.在主窗口类中添加头文件和对应的槽函数

我主窗口的类叫hqMch.
首先在hqMch.h中添加头文件

#include "fileDialog.h"

然后添加一个对话框成员变量

fileDialog* fileDia;//对话框

再添加两个槽函数

private slots:
	void File_openPar();//这个槽函数对应于点击下图第1步的点击主窗口按钮,即弹出对话框
	void showImage();//对应于下图第3步点击ok,主窗口显示两张影响,对话框消失

在这里插入图片描述
下面在hqMch.cpp中添加槽函数的实现,上图步骤1中点击的那个按钮的定义以及connect到File_openPar()这个函数的部分就不写了,这里只记录该槽函数的实现部分:

void hqMch::File_openPar() {
    fileDia = new fileDialog;
    connect(fileDia->ui.okButton, SIGNAL(clicked()), this, SLOT(showImage()));//连接ok按钮和槽函数
    fileDia->show();
}
void hqMch::showImage() {
    QString path1 = fileDia->ui.FileName1->toPlainText();
    if (!path1.isEmpty())                                    // 检测当前路径是否正确
    {
		QImage* img1 = new QImage();
        if (!(img1->load(path1)))
        {
            QMessageBox::information(this, tr("错误"), tr("打开图像失败!"));
            delete img1;
            return;
        }
        m_image1 = img1->copy();
        imgLabel1->setPixmap(QPixmap::fromImage(*img1));
        imgLabel1->resize(img1->width(), img1->height());
        currentPath1 = path1;
    }
    QString path2 = fileDia->ui.FileName2->toPlainText();
    if (!path2.isEmpty())                                    // 检测当前路径是否正确
    {
        if (!(img2->load(path2)))
        {
            QMessageBox::information(this, tr("错误"), tr("打开图像失败!"));
            delete img2;
            return;
        }
        m_image2 = img2->copy();
        imgLabel2->setPixmap(QPixmap::fromImage(*img2));
        imgLabel2->resize(img2->width(), img2->height());
        currentPath2 = path2;
    }
    this->show();
}

运行一下,发现在fileDialog.h中有报错,错误信息为
在这里插入图片描述
查了很久,是Q_OBJECT, 什么moc没有编译啥的,我也搞不明白,看了很多博客也没解决问题,最后发现,右键fileDialog.h,打开属性,在常规->项类型里面,选择Qt Meta-Object Compiler(moc)。
在这里插入图片描述
再次编译,顺利运行。

QT+VS点击按钮弹出窗口的实现
07-28
QT+VS点击按钮弹出窗口的实现,工程说明见博客。。。 http://blog.csdn.net/u012043391/article/details/76228536
自学QT之从对话框弹出对话框
CN小黑
09-06 8059
本来看着教材的目的是写一个标准输入对话框类的,可是因为粗心,一直报错,不过也明白了一些东西,做个总结。 你想要从一个对话框弹出一个对话框,需要在要弹出对话框中加入Q_Object,还需要加入一些头文件声明,比如我是自定义继承QDialog类,需要QDialog的声明和QWidget的声明,同时为构造函数添加参数如类似myd(QWidget* parent=0) 代码: dialog头文件:
Qt窗口】—— 对话框
最新发布
m0_56069910的博客
08-31 1165
对话框详解
Qt对话框
一起coding,一起嗨。
06-19 1771
当使用模态对话框使用时,无法对父窗口进行操作。当对非模态对话框使用时,可以对父窗口进行操作。
QT QInputDialog弹出消息框用法
wangjie36的博客
03-28 1150
void open(QObject *receiver, const char *member):打开输入对话框,并将指定的对象(receiver)和成员函数(member)连接起来,以响应对话框中的操作。void setOption(InputDialogOption option, bool on = true):设置输入对话框的选项,如是否显示取消按钮、是否可编辑等。void setDoubleDecimals(int decimals):设置双精度浮点数的精度,即小数点后的位数。
QT弹出窗口
zhouzongzong的博客
11-03 1745
https://blog.csdn.net/xiaohongmao663832/article/details/94599777
Qt弹出标准对话框的方法
ZONGXP的博客
01-08 5万+
参考:先来看一下最熟悉的QMessageBox::information。我们在以前的代码中这样使用过: QMessageBox::information(NULL, "Title", "Content", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes); 现在我们从API中看看它的函数签名: static Standard...
Qt实战——内置对话框
06-11
8. **QErrorMessage**:当应用程序发生错误时,QErrorMessage可以弹出一个包含错误信息对话框,帮助用户理解问题所在。 9. **QWizard**:对于需要步骤引导的复杂操作,QWizard可以创建一个多页的向导,每一页都...
qt.rar_QT 学习网_Qt 学习笔记_qt 项目体会_qt使用心得
09-24
在“qt.rar”这个压缩包中,包含的是关于QT学习的资源,特别是个人的学习笔记和项目体会,对于初学者来说是宝贵的参考资料。以下将详细讲解QT学习中的一些关键知识点: 1. **Qt基础知识**:Qt的核心是信号与槽机制...
Qt学习笔记-5-Qt标准对话框之QFileDialog
饱腹的鼹鼠的博客
01-15 1771
所谓标准对话框,其实就是 Qt 内置的一些对话框,比如文件选择、颜色选择等等。 QFileDialog 是 Qt 中用于文件打开和保存的对话框。 之前写的openAction只是弹出了一个消息对话框,用于告知这个信号槽已经联通,现在要写真正的打开代码了! 修改 MainWindow 的 open 函数: 写法1 //#include <QFileDialog> void MainWindow::open() { QString path = QFileDialog::get
Qt笔记(二十)之实现窗口定时关闭 源码
01-12
在本篇Qt笔记中,我们将探讨如何在Qt环境中实现窗口的定时关闭功能。这个功能对于创建各种应用,如倒计时器、提醒器或者需要自动退出的程序来说,是非常实用的。我们将使用Qt5和Qt Creator作为开发工具,因为这是在...
Qt 右下角弹出
09-20
Qt做的右下角弹出框例子、0分下载学习。原文http://blog.csdn.net/silencesu/article/details/8001368
QT学习笔记(三)——QT中的坐标系统及窗口位置,大小配置
qq_37764129的博客
08-05 2万+
一、QWidget类中的坐标系统成员函数 Qt中的几何坐标以左上角为原点,其中的GUI组件以左上角进行定位 1.1 表示窗口左上角位置和客户区的长宽 ——x()//窗口左上角的横坐标 ——y()//窗口左上角的纵坐标 ——width() //表示客户区的宽度 ——height()//表示客户区的高度 1.2 表示客户区左上角位置和客户区长宽 ——geometry()//客户区的位置...
Qt弹窗之——标准消息对话框
502BadGateway
05-30 2万+
QT的QMessageBox类提供了一个模式对话框,用于通知用户或询问用户问题并接收答案。包括Question消息框 / Information消息框 / Warning消息框 / Critical消息框 / About消息框 / AboutQt消息框。
QT通过点击按钮弹出新的窗口(新建弹出窗口
热门推荐
jkjijijkv的博客
08-28 6万+
目录第一步:新建QT设计师界面类第二步:为按钮事件设置信号与槽 需求说明:窗口为mainWindow,窗口上有一个按钮,通过点击按钮能弹出一个新的窗口。 第一步:新建QT设计师界面类 右击最顶层的工程文件夹,在弹出的选项里选择Add New(有的版本为添加新文件)。 选择Qt–>Qt设计师界面类,点击Choose。 默认选择Widget,点击下一步。 在这里设置类名,我设置为newWindow,路径默认即可,点击下一步。 这里是汇总信息,默认添加到当前项目,点击完成按钮即可。 完成后Q
Qt弹出一个对话框
kongzhongloucsdn的博客
01-18 2万+
Qt弹出一个对话框
qt弹出消息对话框
人类简史
05-15 8578
1.包含头文件 #include <QMessageBox> 如果要打印出内容,还有添加头文件<QDebug> 2、实例:按键槽: void Widget::on_stopButton_clicked() { QMessageBox message(QMessageBox::Warning,"Information", ...
Qt】:对话框(一)
m0_73790767的博客
04-10 1282
对话框基本创建,通过图形化界面自定义对话框
QT笔记-弹出
C_panpan的专栏
07-13 1310
【代码】QT笔记-弹出框。
Qt学习笔记:从Hello Qt开始
"qt学习笔记.pdf" QT是一个流行的开源C++图形用户界面库,它提供了丰富的功能,用于构建桌面和移动应用程序。这篇学习笔记要涵盖了Qt的基础知识,包括编写"Hello Qt"程序以及如何连接信号和响应函数。 1. **...
写文章

热门文章

  • Pattern Recognition 投稿过程记录,含Elsevier Latex模板使用 20941
  • pr(premiere)导出h.264显示“导出错误,创建编码器失败” 解决方法 12349
  • Python中plt.imshow(image)无法显示图片解决办法 9500
  • 解决Win10 丢失蓝牙功能的问题 8193
  • QT学习笔记(六)——QT弹出对话框并在主窗口调用对话框的信息 7355

分类专栏

  • 笔记 47篇
  • 摄影测量 11篇
  • 软件 4篇
  • c++ 27篇
  • VS学习 15篇
  • 小技巧 16篇
  • opencv图像处理 3篇
  • qt 4篇
  • 正射影像 1篇

最新评论

  • colmap笔记:将模型和影像位姿转换到GPS坐标系下

    余韵永不毕业: 你好,请问你解决了吗,我也遇到了同样的问题

  • colmap笔记:将模型和影像位姿转换到GPS坐标系下

    2401_85770379: 您好,想请问一下,稀疏重建得到的模型是相对坐标系和相对的尺寸大小,在使用model_aligner之后会转到实际地理坐标,尺度也会变成绝对的吗

  • OpenCV反解法数字微分纠正,生产单张航空影像的正射影像

    倘若一切早已注定: 可以问一下数据里的像素大小的单位是毫米吗,这个像素大小是直接得到的还是通过计算得到的呀

  • Pattern Recognition 投稿过程记录,含Elsevier Latex模板使用

    20230716: 我看提交的时候说,必须要单栏的

  • OpenCV反解法数字微分纠正,生产单张航空影像的正射影像

    倘若一切早已注定: 是被旋转了90度吗,解决了吗

大家在看

  • 推荐一款功能强大的智能语言交互软件:豆包桌面客户端
  • JAVA基础笔记3(选择结构+循环结构) 300
  • SOLID - 开放封闭原则 (Open/Closed Principle)
  • C++ | Leetcode C++题解之第498题对角线遍历
  • 数据集,目标检测数据集,番茄叶子病害数据集。一共9种类别:早疫病,晚疫病,叶子黄化,叶霉病,花叶病毒,败血症,蜘蛛病,黄叶卷曲病。一共10746张图片,均采用txt标注好了,看划分了训练集验证集测试集 808

最新文章

  • 在服务器git clone github的代码
  • 笔记:关于相机的姿态角
  • 从metashape导出深度图,从深度图恢复密集点云
2024年11篇
2023年26篇
2022年26篇
2021年17篇
2020年8篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值

玻璃钢生产厂家玻璃钢仿铜动物雕塑乌鲁木齐玻璃钢园林景观雕塑河东玻璃钢雕塑公司浑南玻璃钢雕塑厂家泰州玻璃钢雕塑设计制作信阳公园景观玻璃钢人物雕塑姜堰玻璃钢雕塑清远主题玻璃钢雕塑报价雕塑玻璃钢价格要几万吗贵州玻璃钢雕塑模型厂家九江大型玻璃钢雕塑价位水浪玻璃钢雕塑白银玻璃钢雕塑厂家东莞梵森玻璃钢雕塑厂锻铜玻璃钢仿铜雕塑价格辽阳小区玻璃钢雕塑定做台东玻璃钢雕塑浑源玻璃钢雕塑厂家吉林景观玻璃钢雕塑定制玻璃钢卡通动物雕塑定制厂家玻璃钢名人雕塑伊犁气球商场美陈哪里靠谱气球主题商场美陈漯河玻璃钢人物雕塑厂家电话沈阳人物玻璃钢雕塑制作金昌人物玻璃钢雕塑安装价位合理的玻璃钢花盆贵阳商场美陈安装吉林玻璃钢人物雕塑定制价格自贡玻璃钢牛雕塑香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化