博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Qt之对话框设计——可扩展对话框
阅读量:7050 次
发布时间:2019-06-28

本文共 2921 字,大约阅读时间需要 9 分钟。

彩虹利用setSizeConstraint(QLayout::SetFixedSize)方法使对话框尺寸保持相对固定(有控件决定),不能经过拖动改变大小。


extension.h

  1. #ifndef EXTENSION_H  
  2. #define EXTENSION_H  
  3.   
  4. #include <QtGui/QDialog>  
  5. #include <QWidget>  
  6.   
  7. class Extension : public QDialog  
  8. {  
  9.     Q_OBJECT  
  10.   
  11. public:  
  12.     Extension(QWidget *parent = 0, Qt::WFlags flags = 0);  
  13.     ~Extension();  
  14.   
  15.     void createBaseInfo();  
  16.     void createDetaiInfo();  
  17.   
  18. private:  
  19.     QWidget *baseWidget;  
  20.     QWidget *detaiWidget;  
  21.   
  22.     public slots:  
  23.         void sl_Extension();  
  24.       
  25. };  
  26.   
  27. #endif // EXTENSION_H  

extension.cpp

  1. #include "extension.h"  
  2. #include <QVBoxLayout>  
  3. #include <QGridLayout>  
  4. #include <QLabel>  
  5. #include <QLineEdit>  
  6. #include <QComboBox>  
  7. #include <QPushButton>  
  8.   
  9. Extension::Extension(QWidget *parent, Qt::WFlags flags)  
  10.     : QDialog(parent, flags)  
  11. {  
  12.     setWindowTitle(tr("Extension Dialog"));  
  13.   
  14.     createBaseInfo();  
  15.     createDetaiInfo();  
  16.   
  17.     QVBoxLayout *mainLayout = new QVBoxLayout(this);  
  18.     mainLayout->addWidget(baseWidget);  
  19.     mainLayout->addWidget(detaiWidget);  
  20.     mainLayout->setSpacing(10);  
  21.     mainLayout->setSizeConstraint(QLayout::SetFixedSize);  
  22. }  
  23.   
  24. Extension::~Extension()  
  25. {  
  26.   
  27. }  
  28.   
  29. void Extension::createBaseInfo()  
  30. {  
  31.     baseWidget = new QWidget;  
  32.   
  33.     QLabel *labName = new QLabel(tr("Name:"));  
  34.     QLabel *labSex = new QLabel(tr("Sex:"));  
  35.     QLineEdit *edtName = new QLineEdit;  
  36.     QComboBox *cbbSex = new QComboBox;  
  37.     cbbSex->insertItem(0,tr("male"));  
  38.     cbbSex->insertItem(1,tr("female"));  
  39.     QPushButton *btnOk = new QPushButton(tr("Ok"));  
  40.     QPushButton *btnDetai = new QPushButton(tr("Detai"));  
  41.     connect(btnDetai,SIGNAL(clicked()),this,SLOT(sl_Extension()));  
  42.   
  43.     QGridLayout *baseLayout = new QGridLayout(baseWidget);  
  44.     baseLayout->addWidget(labName,0,0);  
  45.     baseLayout->addWidget(edtName,0,1);  
  46.     baseLayout->addWidget(btnOk,0,2);  
  47.     baseLayout->addWidget(labSex,1,0);  
  48.     baseLayout->addWidget(cbbSex,1,1);  
  49.     baseLayout->addWidget(btnDetai,1,2);  
  50.     baseLayout->setMargin(10);  
  51.     baseLayout->setSpacing(10);  
  52.   
  53. }  
  54.   
  55. void Extension::createDetaiInfo()  
  56. {  
  57.     detaiWidget = new QWidget;  
  58.   
  59.     QLabel *labAge = new QLabel(tr("Age:"));  
  60.     QLabel *labDepartment = new QLabel(tr("Department:"));  
  61.     QLabel *labEmail = new QLabel(tr("Email:"));  
  62.     QLineEdit *edtAge = new QLineEdit;  
  63.     QComboBox *cbbDepartment = new QComboBox;  
  64.     cbbDepartment->insertItem(0,tr("Department 1"));  
  65.     cbbDepartment->insertItem(1,tr("Department 2"));  
  66.     cbbDepartment->insertItem(2,tr("Department 3"));  
  67.     QLineEdit *edtEmail = new QLineEdit;  
  68.   
  69.     QGridLayout *detaiLayout = new QGridLayout(detaiWidget);  
  70.     detaiLayout->addWidget(labAge,0,0);  
  71.     detaiLayout->addWidget(labDepartment,1,0);  
  72.     detaiLayout->addWidget(labEmail,2,0);  
  73.     detaiLayout->addWidget(edtAge,0,1);  
  74.     detaiLayout->addWidget(cbbDepartment,1,1);  
  75.     detaiLayout->addWidget(edtEmail,2,1);  
  76.     detaiLayout->setMargin(10);  
  77.     detaiLayout->setSpacing(10);  
  78.   
  79.     detaiWidget->hide();  
  80. }  
  81.   
  82. void Extension::sl_Extension()  
  83. {  
  84.     if (detaiWidget->isHidden())  
  85.     {  
  86.         detaiWidget->show();  
  87.     }  
  88.     else  
  89.     {  
  90.         detaiWidget->hide();  
  91.     }  
  92. }  

作者:
出处:
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
分类: 
标签: 
本文转自韩兆新博客博客园博客,原文链接:http://www.cnblogs.com/hanzhaoxin/archive/2012/11/17/2775282.html,如需转载请自行联系原作者
你可能感兴趣的文章
df命令,du命令,磁盘分区
查看>>
JNDI到底是什么
查看>>
JS 学习笔记
查看>>
渣渣菜鸡为什么要看 ElasticSearch 源码?
查看>>
JavaEE的13种核心技术
查看>>
spring mvc +mybatis + KafKa+Flume+Zookeeper分布式架构
查看>>
css3的设置颜色透明度的笔记
查看>>
Selenium WebDriver API 进阶使用,模块化参数化进行自动化测试设计
查看>>
用jQuery打造个性网站
查看>>
JQuery-zTree.js使用范例
查看>>
分布式消息通信ActiveMQ
查看>>
LAMP架构介绍以及MySQL安装
查看>>
android采用MVP漫画APP、适配刘海屏、小黄车主界面、录音波浪动画、综合APP等源码...
查看>>
环境变量PATH, cp和mv命令,文档查看
查看>>
如何开发一个用户脚本系列(1)——什么是用户脚本
查看>>
刨根问底-struts-初始化各种配置加载器
查看>>
java unicode
查看>>
redis-cli 命令
查看>>
applicationContext.xml 配置文件的存放位置
查看>>
linux 直接压缩目录或者文件和解压文件
查看>>