在我的上一篇博文中提到我认识到UI设计的重要性。在这里将解析一下使用QtDesigner设计UI进行程序GUI的设计,QtDesigner的.ui文件可以转化为许多的程序代码,比如我知道的就有:c++,python;以下将是以c++为程序设计语言解析一下UI和Code混合编程。

class Ui_QWialog
{
public:
//此处省略关于类里面的一些控件的申明
  ........
  ........ //个人解析:从下面的程序中可以看出一些如何使用QtDesigner和代码混合设计的模式。
//在下面的程序中有一个参数QDialog,这是从程序中传过来的关于主界面的地址,通过这个地址就可以操作整个的界面了
//这个.ui就是一个c++中的类,在使用时其实也是通过直接的申明该类来创建对象的,如果要操作其中的某一个控件可以如下使用:
//  ui->widget void setupUi(QDialog *QWialog)
{
if (QWialog->objectName().isEmpty())  
QWialog->setObjectName(QStringLiteral("QWialog"));
QWialog->resize(, );
horizontalLayoutWidget = new QWidget(QWialog); //指定父窗口
horizontalLayoutWidget->setObjectName(QStringLiteral("horizontalLayoutWidget"));
horizontalLayoutWidget->setGeometry(QRect(, , , ));
horizontalLayout = new QHBoxLayout(horizontalLayoutWidget);
horizontalLayout->setSpacing();
horizontalLayout->setContentsMargins(, , , );
horizontalLayout->setObjectName(QStringLiteral("horizontalLayout"));
horizontalLayout->setContentsMargins(, , , );
groupBox = new QGroupBox(horizontalLayoutWidget);
groupBox->setObjectName(QStringLiteral("groupBox"));
checkBox_2 = new QCheckBox(groupBox);
checkBox_2->setObjectName(QStringLiteral("checkBox_2"));
checkBox_2->setGeometry(QRect(, , , ));
checkBox_3 = new QCheckBox(groupBox);
checkBox_3->setObjectName(QStringLiteral("checkBox_3"));
checkBox_3->setGeometry(QRect(, , , ));
checkBox = new QCheckBox(groupBox);
checkBox->setObjectName(QStringLiteral("checkBox"));
checkBox->setGeometry(QRect(, , , )); horizontalLayout->addWidget(groupBox); horizontalLayoutWidget_2 = new QWidget(QWialog);
horizontalLayoutWidget_2->setObjectName(QStringLiteral("horizontalLayoutWidget_2"));
horizontalLayoutWidget_2->setGeometry(QRect(, , , ));
horizontalLayout_2 = new QHBoxLayout(horizontalLayoutWidget_2);
horizontalLayout_2->setSpacing();
horizontalLayout_2->setContentsMargins(, , , );
horizontalLayout_2->setObjectName(QStringLiteral("horizontalLayout_2"));
horizontalLayout_2->setContentsMargins(, , , );
groupBox_2 = new QGroupBox(horizontalLayoutWidget_2);
groupBox_2->setObjectName(QStringLiteral("groupBox_2"));
radioButton = new QRadioButton(groupBox_2);
radioButton->setObjectName(QStringLiteral("radioButton"));
radioButton->setGeometry(QRect(, , , ));
radioButton_2 = new QRadioButton(groupBox_2);
radioButton_2->setObjectName(QStringLiteral("radioButton_2"));
radioButton_2->setGeometry(QRect(, , , ));
radioButton_3 = new QRadioButton(groupBox_2);
radioButton_3->setObjectName(QStringLiteral("radioButton_3"));
radioButton_3->setGeometry(QRect(, , , )); horizontalLayout_2->addWidget(groupBox_2); plainTextEdit = new QPlainTextEdit(QWialog);
plainTextEdit->setObjectName(QStringLiteral("plainTextEdit"));
plainTextEdit->setGeometry(QRect(, , , ));
horizontalLayoutWidget_3 = new QWidget(QWialog);
horizontalLayoutWidget_3->setObjectName(QStringLiteral("horizontalLayoutWidget_3"));
horizontalLayoutWidget_3->setGeometry(QRect(, , , ));
horizontalLayout_3 = new QHBoxLayout(horizontalLayoutWidget_3);
horizontalLayout_3->setSpacing();
horizontalLayout_3->setContentsMargins(, , , );
horizontalLayout_3->setObjectName(QStringLiteral("horizontalLayout_3"));
horizontalLayout_3->setContentsMargins(, , , );
groupBox_3 = new QGroupBox(horizontalLayoutWidget_3);
groupBox_3->setObjectName(QStringLiteral("groupBox_3"));
pushButton = new QPushButton(groupBox_3);
pushButton->setObjectName(QStringLiteral("pushButton"));
pushButton->setGeometry(QRect(, , , ));
pushButton_2 = new QPushButton(groupBox_3);
pushButton_2->setObjectName(QStringLiteral("pushButton_2"));
pushButton_2->setGeometry(QRect(, , , ));
pushButton_3 = new QPushButton(groupBox_3);
pushButton_3->setObjectName(QStringLiteral("pushButton_3"));
pushButton_3->setGeometry(QRect(, , , )); horizontalLayout_3->addWidget(groupBox_3); retranslateUi(QWialog);      //这是一些属性的设置函数 QMetaObject::connectSlotsByName(QWialog);
} // setupUi

在上面的代码中解释了其中的一些关键的点。使用混合编程的模式,在引入.ui文件后就可以开始界面的重新布局和设置了。

看下面的引用.ui的文件。

#include "qwialog.h"
#include "ui_qwialog.h" QWialog::QWialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::QWialog)
{
ui->setupUi(this); //在这里就是初始化.ui代码。并且通过传入this指针来使得在主界面上进行界面布置。
} QWialog::~QWialog()
{
delete ui;
}

这是运行的结果图

                    

接下来对该界面进行code的设计,这里只是在PainTextEdit中添加一行的文字:

                    

以下是一个简单的代码:

#include "qwialog.h"
#include "ui_qwialog.h" QWialog::QWialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::QWialog)
{
ui->setupUi(this);
ui->plainTextEdit->appendPlainText("UI and Code"); } QWialog::~QWialog()
{
delete ui;
}

这里只是简单的添加一行的代码(也就是在Text中添加最后的字符)。其中更多的运用还需要自己慢慢的摸索

QtDesigner与程序设计模式的更多相关文章

  1. 程序设计模式 —— State 状态模式

    我应该如何阅读? 本文将使用优雅的文字风格来告诉你什么是状态模式. 注意: 1.在阅读本文之前请保证你已经掌控了 面对对象的思想与 多态的基本概念,否则将难以理解. 2.本文实现将用C++实现,你不一 ...

  2. 【MPI学习6】MPI并行程序设计模式:具有不连续数据发送的MPI程序设计

    基于都志辉老师<MPI并行程序设计模式>第14章内容. 前面接触到的MPI发送的数据类型都是连续型的数据.非连续类型的数据,MPI也可以发送,但是需要预先处理,大概有两类方法: (1)用户 ...

  3. 探究osg中的程序设计模式【目录】

    前序 探究osg中的程序设计模式---开篇 探究osg中的程序设计模式---创造性模式 探究osg中的程序设计模式---创造型模式---Factory(工厂)模式 探究osg中的程序设计模式---创造 ...

  4. Java进阶7 并发优化2 并行程序设计模式

    Java进阶7 并发优化2 并行程序设计模式20131114 1.Master-worker模式 前面讲解了Future模式,并且使用了简单的FutureTask来实现并发中的Future模式.下面介 ...

  5. [转][osg]探究osg中的程序设计模式【目录】

    作者:3wwang 原文接连:http://www.3wwang.cn/html/article_104.html 前序 探究osg中的程序设计模式---开篇 探究osg中的程序设计模式---创造性模 ...

  6. 程序设计模式浅析(plain framework商业版设计模式)

    程序设计其实对程序开发者来说十分重要,但是在工作中往往我们却忽略了这一块,因为我们所用的都是现有的模式.一个设计模式的好坏,往往能够体现出程序的专业性,还有整个项目的可持续性.这就是为什么有些公司,在 ...

  7. CRM/ERP 企业管理软件中常见的七种程序设计模式

    管理软件中的常见代码设计模式,来自于业务上的需要,有不恰当的地方欢迎批评指正. 1  RE-TRY 重试模式 场景:在连接数据库服务器时,如果SQL Server数据库没有启动或正在启动,我们需要有一 ...

  8. 【MPI学习2】MPI并行程序设计模式:对等模式 & 主从模式

    这里的内容主要是都志辉老师<高性能计算之并行编程技术——MPI并行程序设计> 书上有一些代码是FORTAN的,我在学习的过程中,将其都转换成C的代码,便于统一记录. 这章内容分为两个部分: ...

  9. Java程序设计模式系列之适配器模式

    理解适配器设计模式需要从生活中的场景进行联系,在生活当中有那些东西能够称为适配器呢?从字面上理解,"适配"的意思就是让一个东西和另一个东西配对,能够让他们一起工作,比如大家用的笔记 ...

随机推荐

  1. 使用Nagios打造专业的业务状态监控

    想必各个公司都有部署zabbix之类的监控系统来监控服务器的资源使用情况.各服务的运行状态,是否这种监控就足够了呢?有没有遇到监控系统一切正常确发现项目无法正常对外提供服务的情况呢?本篇文章聊聊我们如 ...

  2. Linux宝塔软件安装

    yum install -y wget && wget -O install.sh http://download.bt.cn/install/install.sh && ...

  3. mycat中间件--linux安装mycat1.6版本

    一.mycat安装前准备1.mycat下载地址,点击此处进行下载2.环境要求如下: mycat使用Java开发,因为用到了JDK 7的部分功能,所以在使用前请确保安装了JDK 7.0,并设置了正确的J ...

  4. Prim Algoritm(最小生成树)

    Prim Algorithm.这个算法可以分为下面几个步骤: 将顶点集V分成两个集合A和B,其中集合A表示目前已经在MST中的顶点,而集合B则表示目前不在MST中的顶点. 在B寻找与集合A连通的最短的 ...

  5. 面试题----gcc的编译流程

    gcc编译流程 一.    编译与处理指令: gcc -E hello.c -o a.c 如果不使用-o指定输出的文件,会默认输出到终端.所以建议使用同时使用-o选项. 还要注意:编译时会保留#pra ...

  6. 软件架构设计学习总结(1):标准Web系统的架构分层

    1.架构体系分层图 在上图中我们描述了Web系统架构中的组成部分.并且给出了每一层常用的技术组件/服务实现.需要注意以下几点: 系统架构是灵活的,根据需求的不同,不一定每一层的技术都需要使用.例如:一 ...

  7. OSI七层模式简单通俗理解

    OSI七层模式简单通俗理解 这个模型学了好多次,总是记不住.今天又看了一遍,发现用历史推演的角度去看问题会更有逻辑,更好记.本文不一定严谨,可能有错漏,主要是抛砖引玉,帮助记性不好的人.总体来说,OS ...

  8. POJ 2262 Goldbach's Conjecture (打表)

    题目链接: https://cn.vjudge.net/problem/POJ-2262 题目描述: In 1742, Christian Goldbach, a German amateur mat ...

  9. windows开机提示文件损坏

    今早按部就班的开机,然后准备吃热干面,很多时候事情都是同步进行的... 然后眼前出现这样一个界面 心情果断灰暗下来,按照提示一步步操作,点enter进入高级选项,试过了安全模式启动.最后一次正确配置启 ...

  10. 怎么在XY图表中添加注解(LightningChart控件为例)?

    场景: 折线图上有多个信号,每个信号都需要显示在自己的Y轴上.如何在屏幕的右侧显示每个信号的基本统计值?这里有为每个信号计算基本数据: 最小值,最大值,平均值. | |Signal 3........ ...