iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C/C++ Qt如何自定义Dialog对话框组件
  • 719
分享到

C/C++ Qt如何自定义Dialog对话框组件

2023-06-21 21:06:05 719人浏览 薄情痞子
摘要

这篇文章主要介绍“C/C++ Qt如何自定义Dialog对话框组件”,在日常操作中,相信很多人在C/c++ Qt如何自定义Dialog对话框组件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答

这篇文章主要介绍“C/C++ Qt如何自定义Dialog对话框组件”,在日常操作中,相信很多人在C/c++ Qt如何自定义Dialog对话框组件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C/C++ Qt如何自定义Dialog对话框组件”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

但有时候我们需要一次性修改多个数据,使用默认的模态对话框似乎不太够用,此时我们需要自己创建一个自定义对话框,这类对话框也是一种窗体,所以可以在其上面放置任何的通用组件,以实现更多复杂的开发需求。

目前自定义对话框与主窗体的通信有两种方式,一种是通过函数实现通信,另一种则是通过信号实现通信,我们以通过函数通信为基础,解释一下如何实现跨窗体通信。

首先需要创建一个自定义对话框,对话框具体创建流程如下

选择项目 -> AddNew -> QT -> Qt设计师界面类 -> 选择空白Dialog -> 命名为Dialog保存

C/C++ Qt如何自定义Dialog对话框组件

直接选中Dianlog.ui并绘制界面为以下,一个编辑框,两个按钮。

C/C++ Qt如何自定义Dialog对话框组件

其次需要在Dialog对话框上增加两个信号,分别是点击和关闭,并将信号关联到两个槽函数上,其信号应该写成如下样子。

C/C++ Qt如何自定义Dialog对话框组件

接着我们点开dialog.cpp这个类则是对话框类,类内需要定义两个成员函数,它们的功能如下:

  • 第一个 GetValue() 用来获取当前编辑框内的数据并将数据返回给父窗体。

  • 第二个 SetValue() 用来接收传入的参数,并将此参数设置到自身窗体中的编辑框内。

#include "dialog.h"#include "ui_dialog.h"Dialog::Dialog(QWidget *parent) :QDialog(parent),ui(new Ui::Dialog){    ui->setupUi(this);}// 用于MainWindow获取编辑框中的数据QString Dialog::GetValue(){    return ui->lineEdit->text();}// 用于设置当前编辑框中的数据为MainWindow// https://www.cnblogs.com/lysharkvoid Dialog::SetValue(QString x){    ui->lineEdit->setText(x);}Dialog::~Dialog(){    delete ui;}void Dialog::on_BtnOk_clicked(){}void Dialog::on_BtnCancel_clicked(){}

对于主函数来说,当用户点击on_pushButton_clicked()按钮时,我们需要动态将自己创建的Dialog加载,读取出主窗体编辑框内的值并设置到子窗体内,当用户按下QDialog::Accepted时则是获取子窗体内的值,并将其设置到父窗体的编辑框内,主函数代码如下所示.

#include "mainwindow.h"#include "ui_mainwindow.h"#include "dialog.h"#include <iOStream>#include <QDialog>MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow){    ui->setupUi(this);    ui->lineEdit->setEnabled(false);    ui->lineEdit->setText("hello lyshark");}MainWindow::~MainWindow(){    delete ui;}// By: LyShark// Https://www.cnblogs.com/lyshark// 按钮点击后执行void MainWindow::on_pushButton_clicked(){    // 创建模态对话框    Dialog *ptr = new Dialog(this);                                 // 创建一个对话框    Qt::WindowFlags flags = ptr->windowFlags();                     // 需要获取返回值    ptr->setWindowFlags(flags | Qt::MSwindowsFixedSizeDialogHint);  // 设置对话框固定大小    // 读取MainWindows参数并设置到Dialog    QString item = ui->lineEdit->text();    ptr->SetValue(item);    int ref = ptr->exec();             // 以模态方式显示对话框    if (ref==QDialog::Accepted)        // OK键被按下,对话框关闭    {        // 当BtnOk被按下时,则设置对话框中的数据        QString the_value = ptr->GetValue();        std::cout << "value = " << the_value.toStdString().data() << std::endl;        ui->lineEdit->setText(the_value);    }    // 删除释放对话框句柄    delete ptr;}

具体演示代码如下所示:

C/C++ Qt如何自定义Dialog对话框组件

而对于信号版来说,我们需要在dialog.h头文件中增加sendText()信号,以及on_pushButton_clicked()槽函数的声明。

#ifndef DIALOG_H#define DIALOG_H#include <QDialog>namespace Ui {class Dialog;}class Dialog : public QDialog{    Q_OBJECTpublic:    explicit Dialog(QWidget *parent = nullptr);    ~Dialog();// By: LyShark// https://www.cnblogs.com/lysharkprivate:    Ui::Dialog *ui;// 定义信号(信号只需声明无需实现)signals:    void sendText(QString str);private slots:    void on_pushButton_clicked();};#endif // DIALOG_H

dialog.cpp中则在构造函数中建立连接,并提供一个发送到MainWindow中的按钮.

#include "dialog.h"#include "ui_dialog.h"// By: LyShark// https://www.cnblogs.com/lysharkDialog::Dialog(QWidget *parent) :QDialog(parent),ui(new Ui::Dialog){    ui->setupUi(this);    connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(onBtnClick()));}Dialog::~Dialog(){    delete ui;}// 发送信号到MainWindowvoid Dialog::on_pushButton_clicked(){    QString send_data = ui->lineEdit->text();    emit sendText(send_data);}

主窗体头文件mainwindow.h中定义receiveMsg接受数据的槽函数.

#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>namespace Ui {class MainWindow;}class MainWindow : public QMainWindow{    Q_OBJECTpublic:    explicit MainWindow(QWidget *parent = nullptr);    ~MainWindow();// By: LyShark// https://www.cnblogs.com/lysharkprivate slots:    // 定义槽函数    void receiveMsg(QString str);    void on_pushButton_clicked();private:    Ui::MainWindow *ui;};#endif // MAINWINDOW_H

并在mainwindow.cpp中实现这个槽函数。

#include "mainwindow.h"#include "ui_mainwindow.h"#include "dialog.h"#include <QDialog>// By: LyShark// https://www.cnblogs.com/lysharkMainWindow::MainWindow(QWidget *parent) : QMainWindow(parent),ui(new Ui::MainWindow){    ui->setupUi(this);    ui->lineEdit->setEnabled(false);}// 接收信号并设置到LineEdit上void MainWindow::receiveMsg(QString str){    ui->lineEdit->setText(str);}MainWindow::~MainWindow(){    delete ui;}void MainWindow::on_pushButton_clicked(){    Dialog *subwindow = new Dialog(this);    // 当收到sendText信号时使用receiveMsg槽函数处理    connect(subwindow, SIGNAL(sendText(QString)), this, SLOT(receiveMsg(QString)));    subwindow->show();}

代码运行后与基于函数版的基本一致,但在灵活性上来说信号版更好一些。

C/C++ Qt如何自定义Dialog对话框组件

自定义对话框基本就这些内容,灵活运行这些组件,很容易就能实现一些有用的表格编辑器。

C/C++ Qt如何自定义Dialog对话框组件

到此,关于“C/C++ Qt如何自定义Dialog对话框组件”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: C/C++ Qt如何自定义Dialog对话框组件

本文链接: https://www.lsjlt.com/news/300662.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C/C++ Qt如何自定义Dialog对话框组件
    这篇文章主要介绍“C/C++ Qt如何自定义Dialog对话框组件”,在日常操作中,相信很多人在C/C++ Qt如何自定义Dialog对话框组件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答...
    99+
    2023-06-21
  • C/C++Qt自定义Dialog对话框组件应用案例详解
    在上一篇文章 《C/C++ Qt 标准Dialog对话框组件应用》 中我给大家演示了如何使用Qt中内置的标准对话框组件实现基本的数据输入功能。 但有时候我们需要一次性修改多个数据,使...
    99+
    2024-04-02
  • C/C++ Qt Dialog 对话框组件应用技巧
    在Qt中对话框分为两种形式,一种是标准对话框,另一种则是自定义对话框,在一般开发过程中标准对话框使用是最多的了,标准对话框一般包括 QMessageBox,QInputDialog,...
    99+
    2024-04-02
  • C/C++ QT实现自定义对话框的示例代码
    对话框分为多种,常见的有通用对话框,自定义对话框,模态对话框,非模态对话框等,其中通用对话框包括了,QFileDialog文件对话框,QColorDialog颜色对话框,QFontD...
    99+
    2024-04-02
  • C/C++ QT实现自定义对话框的方法是什么
    这篇文章主要讲解了“C/C++ QT实现自定义对话框的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C/C++ QT实现自定义对话框的方法是什么”吧!对话框分为...
    99+
    2023-06-21
  • Android自定义样式圆角dialog对话框
    本文实例为大家分享了Android创建自定义样式圆角dialog对话框的具体代码,供大家参考,具体内容如下 效果如上,圆角对话框,标题和正文都可以自己设定 做法: 1.在res文件...
    99+
    2024-04-02
  • Android自定义对话框Dialog的简单实现
    本文着重研究了自定义对话框,通过一下步骤即可清晰的理解原理,通过更改界面设置和style类型,可以应用在各种各样适合自己的App中。首先来看一下效果图:首先是activity的界面点击了上述图片的按钮后,弹出对话框:点击对话框的确定按钮:点...
    99+
    2023-05-30
    android 对话框 dialog
  • Android怎么自定义样式圆角dialog对话框
    这篇文章主要介绍“Android怎么自定义样式圆角dialog对话框”,在日常操作中,相信很多人在Android怎么自定义样式圆角dialog对话框问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Android...
    99+
    2023-06-25
  • android如何自定义对话框
    这篇文章给大家分享的是有关android如何自定义对话框的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。实现效果  定义dialog.xml (res/layout/dialog.xml)<...
    99+
    2023-06-22
  • Android中如何自定义对话框
    本文小编为大家详细介绍“Android中如何自定义对话框”,内容详细,步骤清晰,细节处理妥当,希望这篇“Android中如何自定义对话框”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。本文测试的harbor的版本是...
    99+
    2023-06-29
  • C/C++ Qt TableDelegate 自定义代理组件使用详解
    TableDelegate 自定义代理组件的主要作用是对原有表格进行调整,例如默认情况下Table中的缺省代理就是一个编辑框,我们只能够在编辑框内输入数据,而有时我们想选择数据而不是...
    99+
    2024-04-02
  • C++和Qt TableDelegate怎么自定义代理组件
    这篇文章主要讲解了“C++和Qt TableDelegate怎么自定义代理组件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++和Qt TableDelegate怎么自...
    99+
    2023-06-21
  • Android如何自定义输入文本对话框?
    文章目录 0.引言1.创建示例工程2.输入文本对话框布局和功能设计3.主程序调用输入文本对话框 0.引言   笔者研究的课题涉及到安卓软件开发,在开发过程中,发现普通的显示消息对话框一般可...
    99+
    2023-10-26
    android java android studio
  • 怎么用c++ qt自定义搜索编辑框
    今天小编给大家分享一下怎么用c++ qt自定义搜索编辑框的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。实现效果如下...
    99+
    2023-06-29
  • Android如何自定义升级对话框示例详解
    前言本文主要给大家介绍了关于Android自定义升级对话框的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。实现的效果如下所示其实这也只是一个DialogFragment 而已,重点只是在于界面的设计想要使用做出这...
    99+
    2023-05-30
    android 自定义 升级对话框
  • 微信小程序如何实现自定义对话框
    这篇文章将为大家详细讲解有关微信小程序如何实现自定义对话框,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。微信小程序 自定义对话框实例详解效果图:index.wxml:&l...
    99+
    2024-04-02
  • 微信小程序如何自定义模态对话框
    这篇文章给大家分享的是有关微信小程序如何自定义模态对话框的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。由于官方API提供的显示模态弹窗,只能简单地显示文字内容,不能对对话框内容进...
    99+
    2024-04-02
  • C#中如何自定义事件
    这篇文章将为大家详细讲解有关C#中如何自定义事件,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。C#自定义事件C#语言中有77个关键字,其中delegate和event专门为C#中事件处理系统...
    99+
    2023-06-17
  • C++程序员如何操作文件对话框
    今天小编给大家分享一下C++程序员如何操作文件对话框的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1、调用GetOpenFi...
    99+
    2023-06-30
  • c++ qt自定义搜索编辑框的实现方法
    目录自定义LineEdit主界面代码其它说明实现效果如下: 实现方法说明:(1)自定义QLineEdit,在编辑框里添加布局,将按钮设置在右边(2)给自定义QLineEdit添加信...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作