Qt4----子例化QDialog(可扩展对话框的使用)
来源:互联网 发布:驱动精灵mac版 编辑:程序博客网 时间:2024/05/16 08:50
1、linux下安装Qt4请参考如下博文:
Qt4在linux下的安装
2、Qt4工程的创建请参考如下博文:
Qt4创建工程的几种方法:linux系统
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 = appTARGET =DEPENDPATH +=INCLUDEPATH +=# InputHEADERS += \ ExtensionDlg.hSOURCES += \ ExtensionDlg.cpp \ main.cpp
FROM: http://www.cnblogs.com/snake-hand/p/3151297.html
0 0
- Qt4----子例化QDialog(可扩展对话框的使用)
- Qt4----子例化QDialog(可扩展对话框的使用)
- 可扩展的对话框
- 可扩展的对话框
- Qt4的QDialog和QWidget
- Qt:可扩展对话框的实现
- 可扩展对话框
- 对话框 QDialog
- 对话框-QDialog
- QDialog的使用
- QT学习 之 对话框 (一) 可扩展对话框
- MFC对话框扩展区域显示(可伸缩对话框区域)
- Qt中常用的对话框总结QDialog
- Qt对话框QDialog的返回值
- 2.1派生对话框类(Subclassing QDialog)
- 2.1派生对话框类(Subclassing QDialog)
- QT 总结(五) 对话框QDialog
- Qt 实现可扩展对话框
- Html5添加非常实用的可自动轮播的旋转木马插件教程
- Ubuntu 14.04开机总是显示system program problem detected
- tomcat的ip可以访问,域名无法访问
- git flow使用总结
- VSS2005创建源代码管理
- Qt4----子例化QDialog(可扩展对话框的使用)
- 华为OJ 合唱队
- stm32嵌入汇编的方法
- 文章标题
- 查询数据库表中同一字段值相同的数据行 +exists 的使用
- RunLoop深度探究(一)
- webVIew中ZoomButtonsController崩溃//解决Receiver not registered: android.widget.ZoomButtonsController
- 【JQuery】知识点总结(下)
- 把握移动互联网营销5个关键点,实现利益最大化