服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - 利用Qt实现可扩展对话框的示例代码

利用Qt实现可扩展对话框的示例代码

2022-12-29 14:05wendy_ya C/C++

可扩展对话框通常用于用户对界面有不同要求的场合。当供高级用户使用或需要更多信息时,可通过某种方式的切换显示完整对话窗体(扩展窗体)。本文将用Qt实现可扩展对话框,需要的可以参考一下

可扩展对话框通常用于用户对界面有不同要求的场合。通常情况下,只出现在基本对话窗体;当供高级用户使用或需要更多信息时,可通过某种方式的切换显示完整对话窗体(扩展窗体)。切换的工作通常由一个按钮完成。

一、项目介绍

实现一个简单填写资料的对话框。通常情况下,只需要填写姓名和性别。若有特殊需要,还需要填写更多信息时,则切换至完整对话窗体,完整对话窗体包括年龄、部门、联系方式等。此时详细按钮切换为简略按钮,在此点击缩回简单对话窗体。

二、项目基本配置

新建一个Qt案例,项目名称为“Extension”,基类选择“QDialog”,取消创建UI界面复选框的选中状态,完成项目创建。

三、UI界面设计

无UI界面

四、主程序实现

4.1 dialog.h头文件

声明一个按钮点击槽函数:

?
1
2
private slots:
    void showDetailInfo();

声明两个函数实现窗体部分的创建,声明两个窗体和一个按钮:

?
1
2
3
4
5
6
7
private:
    void createBaseInfo();  //实现基本对话窗体部分
    void createDetailInfo();//实现扩展窗体部分
    QWidget *baseWidget;    //基本窗体部分
    QWidget *detailWidget;  //扩展窗体部分
 
    QPushButton *DetailBtn; //详细-简略按钮

4.2 dialog.cpp源文件

主函数定义如下:

?
1
2
3
4
5
6
7
8
setWindowTitle("Extension Dialog");   //窗体标题
createBaseInfo();
createDetailInfo();
QVBoxLayout *layout=new QVBoxLayout(this);//布局
layout->addWidget(baseWidget);
layout->addWidget(detailWidget);
layout->setSizeConstraint(QLayout::SetFixedSize);//设置窗体的大小固定,不能利用拖拽改变大小
layout->setSpacing(10);   //设置间距为10

定义createBaseInfo()函数,完成基本窗体baseWidget的构建:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//完成基本窗体baseWidget的构建
void Dialog::createBaseInfo()
{
    baseWidget=new QWidget;
    QLabel *nameLabel=new QLabel("姓名:");
    QLineEdit *nameLineEdit=new QLineEdit;
    QLabel *sexLabel=new QLabel("性别:");
    QComboBox *sexComboBox=new QComboBox;
    sexComboBox->insertItem(0,"女");
    sexComboBox->insertItem(1,"男");
    QGridLayout *LeftLayout=new QGridLayout;
    LeftLayout->addWidget(nameLabel,0,0);
    LeftLayout->addWidget(nameLineEdit,0,1);
    LeftLayout->addWidget(sexLabel,1,0);
    LeftLayout->addWidget(sexComboBox,1,1);
    QPushButton *OKBtn=new QPushButton("确定");
    DetailBtn=new QPushButton("详细");
    QDialogButtonBox *btnBox=new QDialogButtonBox(Qt::Vertical);
    btnBox->addButton(OKBtn,QDialogButtonBox::ActionRole);
    btnBox->addButton(DetailBtn,QDialogButtonBox::ActionRole);
    QHBoxLayout *mainLayout=new QHBoxLayout(baseWidget);
    mainLayout->addLayout(LeftLayout);
    mainLayout->addWidget(btnBox);
    connect(DetailBtn,SIGNAL(clicked()),this,SLOT(showDetailInfo()));//点击详细按钮触发showDetailInfo()槽函数
}

定义createDetailInfo()函数,完成扩展窗体detailWidget的构建:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//实现扩展窗体detailWidget的构建
void Dialog::createDetailInfo()
{
    detailWidget=new QWidget;
    QLabel *ageLabel=new QLabel("年龄:");
    QLineEdit *ageLineEdit=new QLineEdit;
    ageLineEdit->setText("30");
    QLabel *departmentLabel=new QLabel("部门:");
    QComboBox *departmentComboBox=new QComboBox;
    departmentComboBox->addItem("部门1");
    departmentComboBox->addItem("部门2");
    departmentComboBox->addItem("部门3");
    QLabel *teleLabel=new QLabel("电话:");
    QLineEdit *teleLineEdit=new QLineEdit;
    QGridLayout *mainLayout=new QGridLayout(detailWidget);
    mainLayout->addWidget(ageLabel,0,0);
    mainLayout->addWidget(ageLineEdit,0,1);
    mainLayout->addWidget(departmentLabel,1,0);
    mainLayout->addWidget(departmentComboBox,1,1);
    mainLayout->addWidget(teleLabel,2,0);
    mainLayout->addWidget(teleLineEdit,2,1);
    detailWidget->hide();//隐藏详细窗体
}

最后实现窗体和按钮文本的切换功能:

?
1
2
3
4
5
6
7
8
9
10
11
12
//实现窗体的扩展切换功能
void Dialog::showDetailInfo(){
    if(detailWidget->isHidden()){
        detailWidget->show();
        DetailBtn->setText("简略");
    }
    else
    {
        detailWidget->hide();
        DetailBtn->setText("详细");
    }
}

五、效果演示

利用Qt实现可扩展对话框的示例代码

到此这篇关于利用Qt实现可扩展对话框的示例代码的文章就介绍到这了,更多相关Qt可扩展对话框内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://wendy.blog.csdn.net/article/details/122020831

延伸 · 阅读

精彩推荐
  • C/C++C++类的大小介绍

    C++类的大小介绍

    这篇文章主要介绍了C++类的大小,在C++中,结构体和类的唯一区别就是结构体和类具有不同的默认访问控制属性,下面一起进入文章查看详细内容...

    学渣的C/C++3542022-02-22
  • C/C++基于C语言fflush()函数的使用详解

    基于C语言fflush()函数的使用详解

    本篇文章是对C语言中fflush()函数的使用进行了详细的分析介绍,需要的朋友参考下...

    C语言教程网3952020-12-09
  • C/C++C++中的异或运算符^的使用方法

    C++中的异或运算符^的使用方法

    本篇文章对C++中的异或运算符^的使用方法进行的详细的分析介绍,需要的朋友参考下...

    C++教程网6172020-11-26
  • C/C++C语言版五子棋游戏的实现代码

    C语言版五子棋游戏的实现代码

    这篇文章主要为大家详细介绍了C语言版五子棋游戏的实现代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    泾箐8812021-12-07
  • C/C++C++ 中CListCtrl的每个项都显示不同的提示信息

    C++ 中CListCtrl的每个项都显示不同的提示信息

    这篇文章主要介绍了C++ 中CListCtrl的每个项都显示不同的提示信息的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下...

    z02031530086772021-06-02
  • C/C++一篇文章带你了解C语言中volatile关键字

    一篇文章带你了解C语言中volatile关键字

    这篇文章主要给大家介绍了关于C语言中volatile关键字,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们...

    精致的灰(>_<)9752021-12-27
  • C/C++Qt QTreeWidget 树形结构实现代码

    Qt QTreeWidget 树形结构实现代码

    Qt中实现树形结构可以使用QTreeWidget类,也可以使用QTreeView类,QTreeWidget继承自QTreeView类,接下来通过本文给大家介绍Qt QTreeWidget 树形结构实现代码,需要的朋...

    yuanzhangmei13552022-03-06
  • C/C++C++ 开发之实现操作符重载的实例

    C++ 开发之实现操作符重载的实例

    这篇文章主要介绍了C++ 开发之实现操作符重载的实例的相关资料,这里附有实例代码和实现效果图帮助大家参考实践,需要的朋友可以参考下...

    liuyi12071643399162021-05-24