Qt之对话框设计——可扩展对话框

简介:

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


image

image

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. }  

作者: 韩兆新
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
分类:  [02]Qt语言基础
标签:  Qt学习笔记

本文转自韩兆新博客博客园博客,原文链接:http://www.cnblogs.com/hanzhaoxin/archive/2012/11/17/2775282.html,如需转载请自行联系原作者
目录
相关文章
|
8月前
|
Linux iOS开发 MacOS
19 QT - 标准文件对话框
19 QT - 标准文件对话框
40 0
|
28天前
Qt之对话框
Qt之对话框
16 6
|
28天前
Qt消息对话框
Qt消息对话框
126 3
|
28天前
Qt颜色、文件、字体对话框
Qt颜色、文件、字体对话框
18 1
Qt (QFileDialog&QColorDialog&QFontDialog) 对话框实战
Qt (QFileDialog&QColorDialog&QFontDialog) 对话框实战
Qt (QFileDialog&QColorDialog&QFontDialog) 对话框实战
Qt (QInputDialog 、QMessageBox、QMessageBox)对话框实战
Qt (QInputDialog 、QMessageBox、QMessageBox)对话框实战
|
2月前
Qt6学习笔记五(自定义对话框、QMessageBox、QColorDialog、QFileDialog、QFontDialog)
Qt6学习笔记五(自定义对话框、QMessageBox、QColorDialog、QFileDialog、QFontDialog)
67 0
|
2月前
|
Linux 数据安全/隐私保护
【qt】一次性学会所有对话框2
【qt】一次性学会所有对话框
16 0
|
2月前
【qt】一次性学会所有对话框1
【qt】一次性学会所有对话框
29 0
|
8月前
15 QT - 对话框QDialog概述
15 QT - 对话框QDialog概述
28 0