Qt4----子例化QDialog(可扩展对话框的使用)
1、linux下安装Qt4请参考如下博文:
2、Qt4工程的创建请参考如下博文:
3、可扩展对话框
通过纯代码的形式,建立工程。点击【Detail】按钮,显示扩展对话框
包括四部分:
工程文件:ExtensionDlg.pro
主程序文件:main.cpp
对话框类:ExtensionDlg.h
实现文件:ExtensionDlg.cpp
4、实例运行效果:
5、代码区:
main()函数
#include <QApplication>
#include "ExtensionDlg.h" int main(int argc, char* argv[])
{
QApplication app(argc, argv);
ExtensionDlg exDlg;
exDlg.show();
return app.exec();
}
ExtensionDlg.h文件
#ifndef EXTENSIONDLG_H
#define EXTENSIONDLG_H
#include <QtGui> class ExtensionDlg:public QDialog
{
Q_OBJECT //加入Q——OBJECT宏,程序中用到信号/槽等Qt核心机制的,都需要加入此宏
public:
ExtensionDlg(); //构造函数
void initBasicInfo(); //初始化基础信息
void initDetailInfo(); //初始化扩展信息
public slots: //声明共有槽
void slot2Extension(); //单击Detail按钮是被触发
private:
QWidget* baseWidget; //伸缩前对话框窗体,必须为指针
QWidget* detailWidget; //扩展后对话框窗体,必须为指针
}; #endif // EXTENSIONDLG_H
ExtensionDlg.cpp文件
#include "ExtensionDlg.h" ExtensionDlg::ExtensionDlg()
{
setWindowTitle(tr("Extension Dialog")); //显示标题
initBasicInfo(); //初始化基本信息窗体
initDetailInfo(); //初始化扩展信息窗体 QVBoxLayout* layout = new QVBoxLayout; //定义一个垂直布局类实体,QHBoxLayout为水平布局类实体
layout->addWidget(baseWidget); //加入baseWidget
layout->addWidget(detailWidget); //加入DetailWidget
layout->setSizeConstraint(QLayout::SetFixedSize); //设置窗体缩放模式,此处设置为固定大小
layout->setSpacing(6); //窗口部件之间间隔大小
setLayout(layout); //加载到窗体上
} void ExtensionDlg::initBasicInfo()
{
baseWidget = new QWidget; //实例化baseWidget
QLabel* nameLabel = new QLabel(tr("Name")); //定义窗体部件
QLineEdit* nameEdit = new QLineEdit;
QLabel* sexLabel = new QLabel(tr("Sex"));
QComboBox* sexComboBox = new QComboBox; sexComboBox->addItem(tr("male"));
sexComboBox->addItem(tr("female")); QPushButton* okButton = new QPushButton(tr("OK"));
QPushButton* detailButton = new QPushButton(tr("Detail")); connect(detailButton, SIGNAL(clicked()), this, SLOT(slot2Extension())); //使用信号/槽机制 QDialogButtonBox* btnBox = new QDialogButtonBox(Qt::Horizontal); //QDialogButtonBox使用方法
btnBox->addButton(okButton, QDialogButtonBox::ActionRole);
btnBox->addButton(detailButton, QDialogButtonBox::ActionRole); QFormLayout* formLayout = new QFormLayout; //表单布局方法
formLayout->addRow(nameLabel, nameEdit);
formLayout->addRow(sexLabel, sexComboBox); QVBoxLayout* vboxLayout = new QVBoxLayout; //窗体顶级布局,布局本身也是一种窗口部件
vboxLayout->addLayout(formLayout); //顶层窗体加入表单
vboxLayout->addWidget(btnBox); //顶层窗体加入按钮
baseWidget->setLayout(vboxLayout); //加载到窗体上
} void ExtensionDlg::initDetailInfo()
{
detailWidget = new QWidget;
QLabel* ageLabel = new QLabel(tr("Age"));
QLineEdit* ageEdit = new QLineEdit;
ageEdit->setText(tr("25"));
QLabel* deptLabel = new QLabel(tr("Department"));
QComboBox* deptComboBox = new QComboBox; deptComboBox->addItem(tr("department 1"));
deptComboBox->addItem(tr("department 2"));
deptComboBox->addItem(tr("department 3"));
deptComboBox->addItem(tr("department 4")); QLabel* addressLabel = new QLabel(tr("Address"));
QLineEdit* addressEdit = new QLineEdit;
QFormLayout* formLayout = new QFormLayout;
formLayout->addRow(ageLabel, ageEdit);
formLayout->addRow(deptLabel, deptComboBox);
formLayout->addRow(addressLabel, addressEdit); detailWidget->setLayout(formLayout);
detailWidget->hide(); //将扩展信息窗口隐藏,hide()是Qt默认槽函数之一
} void ExtensionDlg::slot2Extension()
{
if(detailWidget->isHidden()) //ishidden()函数判断扩展窗口显隐状态
detailWidget->show();
else
detailWidget->hide();
}
ExtensionDlg.pro文件
TEMPLATE = app
TARGET =
DEPENDPATH +=
INCLUDEPATH +=
# Input
HEADERS += \
ExtensionDlg.h SOURCES += \
ExtensionDlg.cpp \
main.cpp
Qt4----子例化QDialog(可扩展对话框的使用)的更多相关文章
- Qt4--加密日记本(子例化QMainWindow文本加密解密)
近来刚学习Qt4编程,想找个实例练习练习,于是产生了一个想法,就是怎么样做一个文本加密,这样,自己保存的一些文档可以通过软件 生成加密文本,到时候要看的时候,通过自己的软件读取就可以.既然有想法了,那 ...
- QT中实现应用程序的单例化
一介绍 通过编写一个QSingleApplication类,来实现Qt程序的单例化,原文的作者是在Windows Vista + Qt4.4 下实现的,不过应用在其他平台上是没问题的.(本文是我在ht ...
- 利用python自动生成verilog模块例化模板
一.前言 初入职场,一直忙着熟悉工作,就没什么时间更新博客.今天受“利奇马”的影响,只好宅在家中,写写技术文章.芯片设计规模日益庞大,编写脚本成了芯片开发人员必要的软技能.模块端口动不动就几十上百个, ...
- 62.在cdc文件上某些例化模块看不到的原因
比如在顶层文件中,例化了几个模块,综合后打开cdc文件,会在structure/net中少几个例化模块,即看不到,但在顶层文件中还是存在的,只是ISE软件综合的问题而已,原因是在顶层或子模块中,有些应 ...
- Quartus中例化工程
一般的例化工程,需要将要例化的对象的硬件语言放入到当前工程中,比如A要例化B,需要将B的编程文件加入当前工程进来. 还有一种方法不用这么麻烦,A工程用要例化B时,在library添加B的工程路径,就可 ...
- testbench中$display查看例化model里面信号方法以及$realtime用法
前言 此为测试语法,不可综合: 流程: 1.在tb中可以这么写,检测clk_t_en的高电平,输出仿真时间位置,想查看的cnt_t是底层模块中的.这么会使得时间延迟一个周期: always @(pos ...
- Vscode生成verilog例化
前言 手动例化又慢又容易出错,孩子老犯错怎么办? 当然是脚本一劳永逸. 流程 (1)在vscode中安装如下插件. (2)在电脑中安装python3以上的环境. 下载地址:https://www.py ...
- FPGA例化ROM存储表格
FPGA例化ROM存储表格 1.选择ROM 2.填写数据位宽和深度 3.加载ROM初始化信息,coe文件
- Kotlin入门(28)Application单例化
Application是Android的又一大组件,在App运行过程中,有且仅有一个Application对象贯穿应用的整个生命周期,所以适合在Application中保存应用运行时的全局变量.而开展 ...
随机推荐
- QT直接支持GB18030,附它对此编码的一堆相关文档描述
http://doc.qt.io/qt-5/qtextcodec.html http://doc.qt.io/qt-5/codec-gbk.html
- 《Python学习手册》
读书笔记请见Github博客:http://wuxichen.github.io/Myblog/reading/2014/10/04/LearningPython.html
- VC++网络高级编程
内含<VC网络高级编程>电子书 及源代码. 第一章.TCP/IP协议.第二章.Winsock网络编程接口:第二章.Visual C++与网络编程:第四章.基本网络编程技术:第五章.Teln ...
- 历时一年,我的著作《第一行代码——Android》已出版!
前言 事实上我当初决定開始写博客的想法挺简单的,认为自己搞技术这么多年了,总应该要留下点什么.既然没能写出什么出色的应用,那至少也要留下点文字分享给大家,以指引在我后面的开发人员们,毕竟我也从前辈们的 ...
- Android使用HttpClient向服务器传输文件
HttpClient是Apache Jakarta Common下的子项目,可以用来提供功能丰富的支持HTTP协议的客户端编程工具包,这几天写客户端的时候遇到个问题,“客户端需要向服务器发送Post请 ...
- VS Code开发调试ASP.NET Core 1.0
VS Code开发调试ASP.NET Core 1.0 使用VS Code开发调试ASP.NET Core 1.0,微软在今天凌晨发布了.NET Core 1.0,ASP.NET Core 1.0 与 ...
- 作为Qt 合作伙伴的V-Play,比大家都领先了一步 planet.qt.io
今天发布博客,将Flappy Bird和其它的小游戏移植到Respberry PI了 http://planet.qt.io/ planet.qt.io 的repo: https://coderevi ...
- java Hastable使用
jdk:http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Hashtable.html Hashtable numbers = new Ha ...
- BNU 26579 Andrew the Ant 【蚂蚁】
链接: http://www.bnuoj.com/bnuoj/problem_show.php?pid=26579 http://www.bnuoj.com/bnuoj/contest_show.ph ...
- SDUTOJ 2128 树结构练习——排序二叉树的中序遍历
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvUl9NaXNheWE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA ...