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中保存应用运行时的全局变量.而开展 ...
随机推荐
- python 爬一下
1.安装Requestswindow:pip install requestslinux:sudo pip install requests国内安装缓慢,建议到:http://www.lfd.uci. ...
- python list comprehension twos for loop 嵌套for循环
list comprehension 后面可以有多个for loops,每个for后面可以有if [(x, y, x * y)for x in(0,1,2,3)for y in(0,1,2,3)if ...
- java学习之反射
package com.gh.ref; public class Person { private String name; private int age; private char sex; pr ...
- Objective-C中的类目(Category),延展(Extension)
类目和延展的作用都是为了扩展一个类. Objective-C中的类目(Category) 一.类目的定义和作用 类目也叫分类,英文Category,在没有原类.m文件的基础上,给该类添加方法. 比如, ...
- 免费的HTML5连载来了《HTML5网页开发实例具体解释》连载(六)媒体查询
响应式设计的还有一个重要技术手段是媒体查询.假设仅仅是简单的设计一个流式布局系统,那么能够保证每一个网格按比例的放大和缩小,但有可能会使得在小屏幕下(如手机设备)网格太小而严重影响阅读,这种设计称不上 ...
- 10_9 java笔记
java中所有的关键字都是小写的注意main虽然被编译器识别,但是它并不是关键字包:(名字小写) 单级包:liyi 多级包:cn.itcast path 和classpath的区别:path环境变量里 ...
- 永久性for循环配合switch语句可以实现菜单功能
永久性for循环配合switch语句可以实现菜单功能总结:加入想要无条件地跳转到某条语句执行,用goto语句: 加入想要对某种条件进行判断,为真或为假分别执行不同的语句,用if语句 加入想要检测的条件 ...
- c++ 虚析构函数[避免内存泄漏]
c++ 虚析构函数: 虚析构函数(1)虚析构函数即:定义声明析构函数前加virtual 修饰, 如果将基类的析构函数声明为虚析构函数时,由该基类所派生的所有派生类的析构函数也都自动成为虚析构函数. ...
- Linux 下github的使用
*初始化git仓库,使用git init命令 *添加文件到git仓库分两步: 1.使用git add filename :可分多次使用,添加多个文件到暂存区 2.使用git commit -m “ ...
- Google Code Jam Round 1A 2015 Problem B. Haircut 二分
Problem You are waiting in a long line to get a haircut at a trendy barber shop. The shop has B barb ...