精华内容
下载资源
问答
  • QT纯代码设计UI界面&Demo

    千次阅读 2020-05-18 17:39:59
    ②另一种就是纯代码设计UI,也就是不可视设计UI,这在中大型项目常见,优点是界面隐蔽性强。 无论那种方式,实际上都是转化为第二种的方式,只是第一种是QT已经帮忙处理了,处理成第二种纯代码的形式。 本文简析纯...

    目录

    一、前言

    二、界面

    三、源码简析

    四、Demo/源码


    一、前言

    UI的设计方法有几种:

    ①一种是使用Qt Designer,也就是可视化设计,这在小型项目中常见,优点就是可观简便;

    ②另一种就是纯代码设计UI,也就是不可视设计UI,这在中大型项目常见,优点是界面隐蔽性强。

    无论那种方式,实际上都是转化为第二种的方式,只是第一种是QT已经帮忙处理了,处理成第二种纯代码的形式。

    本文简析纯代码设计UI的Demo,大家在项目中可以直接套用。

     

    二、界面

    界面设计很简便,两个label,两个button,button配槽函数,请配合源码看

     

    三、源码简析

    ①源码结构

    ②工程里需要加入model

    CUI.pro

    QT       += core gui
    
    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
    
    TARGET = CUI
    
    TEMPLATE = app
    
    
    SOURCES += main.cpp \
        CUI.cpp
    
    HEADERS += \
        CUI.h

    ③在main里显示CUI界面类

    main.cpp

    #include <QApplication>
    #include "CUI.h"
    
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv); //注意是QApplication
    
        CUI ui;
        ui.show();
    
        return a.exec();
    }

    ④界面类的设计:

    CUI.h

    #ifndef CUI_H
    #define CUI_H
    
    #include <QWidget>
    
    class CUI : public QWidget
    {
        Q_OBJECT
        class Impl;
    public:
        explicit CUI(QWidget *parent = 0);
        ~CUI();
    
    private slots:
        void stClickedbutton1();
        void stClickedbutton2();
    
    private:
        //使用智能指针处理界面的内容
        QScopedPointer<Impl>    m_Impl;
    };
    
    #endif // CUI_H
    

    CUI.cpp

    #include "CUI.h"
    #include <QPushButton>
    #include <QLabel>
    #include <QGridLayout>
    
    //定义界面类的键和函数
    class CUI::Impl
    {
    public:
        QLabel*             label_1;
        QPushButton*        button_1;
        QLabel*             label_2;
        QPushButton*        button_2;
    
        void setupUi(QWidget* parent);
        void retranslate(QWidget* parent);
        void signalSlot(QWidget* parent);
    };
    
    //初始化布局
    void CUI::Impl::setupUi(QWidget *parent)
    {
        label_1 = new QLabel;
        button_1 = new QPushButton;
        label_2 = new QLabel;
        button_2 = new QPushButton;
    
        QGridLayout* glayReview = new QGridLayout(parent);
        glayReview->setContentsMargins(10, 10, 10, 10);
        glayReview->addWidget(label_1, 0, 0, 1, 1);
        glayReview->addWidget(button_1, 0, 1, 1, 1);
        glayReview->addWidget(label_2, 1, 0, 1, 1);
        glayReview->addWidget(button_2, 1, 1, 1, 1);
    
        retranslate(parent);
        signalSlot(parent);
    }
    
    //初始化名称size等
    void CUI::Impl::retranslate(QWidget* parent)
    {
        label_1->setText("label_1");
        button_1->setText("button_1");
        label_2->setText("label_2");
        button_2->setText("button_2");
    
        label_1->setMinimumWidth(150);
        button_1->setMinimumWidth(100);
        label_2->setMinimumWidth(150);
        button_2->setMinimumWidth(100);
    
        parent->setFixedSize(250,250);
    }
    
    //初始化信号槽
    void CUI::Impl::signalSlot(QWidget *parent)
    {
        connect(button_1, SIGNAL(clicked()), parent, SLOT(stClickedbutton1()));
        connect(button_2, SIGNAL(clicked()), parent, SLOT(stClickedbutton2()));
    }
    
    
    CUI::CUI(QWidget *parent) :
        QWidget(parent),m_Impl(new Impl)
    {
        //设置UI
        m_Impl->setupUi(this);
    }
    
    CUI::~CUI()
    {
    }
    
    void CUI::stClickedbutton1()
    {
        m_Impl->label_1->setText("label_1_change");
    }
    
    void CUI::stClickedbutton2()
    {
        m_Impl->label_2->setText("label_2_change");
    }
    

    四、Demo/源码

    链接:https://pan.baidu.com/s/1IfprWv2D5nxA88yNFXlPLw 
    提取码:pn49

    展开全文
  • 代码设计的六大原则

    万次阅读 2018-07-03 15:17:27
    现在主要针对的是代码设计的原则,在设计代码的时候,不能总是想到哪就打到哪,还需要有个大致的流程,否则写出来的代码也是很繁冗,不够简洁。对于自己的代码编程还没达到一个期望的程度,对于代码的设计。主要注意...

    开了博客,为了能够更好的学习,对于自己不了解和还没有掌握的知识加以归类,巩固以及加强。

    现在主要针对的是代码设计的原则,在设计代码的时候,不能总是想到哪就打到哪,还需要有个大致的流程,否则写出来的代码也是很繁冗,不够简洁。对于自己的代码编程还没达到一个期望的程度,对于代码的设计。主要注意以下的六大原则:

    单一职责

    一个类或者一个接口,最好只负责一项职责。

    开闭原则

    一个软件实体如类、模版和函数应该对扩展,对修改关闭;

    里氏替换原则

    子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法; 
    * 子类可以增加自己特有的方法; 
    * 当子类的方法重载父类的方法时,方法的形参要比父类方法的输入参数更佳宽松; 
    * 当子类的方法实现父类的抽象方法时,方法的返回值要比父类更加严格;

    依赖倒置原则

     低层模块尽量都要有抽象类或者接口,或者两者都有; 
    * 变量的声明类型尽量是抽象类或者接口; 
    * 使用继承时遵循里氏替换原则;

    接口隔离原则

    * 一个接口只服务于一个子模块或业务逻辑,服务定制; 
    * 通过业务逻辑压缩接口中的public方法,让接口看起来更加精悍; 
    * 已经被污染了的接口,尽量修改,如果变更风险太大,则用适配器模式进行转化; 
    * 根据具体的业务,深入了解逻辑,用心感知去控制设计思路;

    迪米特原则

    定义:一个对象应该对其他对象保持最少的了解,其核心精神就是:不和陌生人说话,通俗之意就是一个对象对自己需要耦合关联调用的类应该知道的少;这会导致类之间的耦合度降低,每个类都尽量减少对其他类的依赖。

    展开全文
  • 代码设计 六大原则

    万次阅读 2016-07-02 02:13:22
    注意,接口尽量小,但是要有限度,对接口进行细化可以提高程序设计灵活性,但是如果过小,则会导致接口数量尽量小,使设计复杂化。所以一定要适度,为依赖接口的类定制服务,只暴露给调用的类它需要的方法,它不需要...

    单一职责原则 Single Responsibility Principle

    定义:一个类或者一个接口,最好只负责一项职责。

    问题由来:类T负责两个不同的职责P1和P2。由于职责P1需要发生改变而需要修改T类,就有可能导致原来运行正常的职责P2功能发生故障。

    解决方法:遵循单一职责原则。分别建立新的类来对应相应的职责;这样就能避免修改类时影响到其他的职责;

    当遇到职责扩散的时候,在逻辑足够简单的时候,才可以在代码级别上面违反单一职责原则,只有类中方法数量足够少,才可以在方法级别上违反单一职责原则;

    优点:类的复杂性将会降低,可读性将会大大提高,维护性也会提高。


    里氏替换原则 Liskov Substitution Principle

    在使用基类的地方可以任意使用其子类,能保证子类完美替换基类;这一种精神其实是对继承机制约束规范的体现。在父类和子类的具体实现中,严格控制继承层次中的关系特征,以保证用子类替换基类时,程序行为不发生问题,且能正常进行下去。

    对于继承来说,父类定义了一系列的规范和契约,虽然不强制所有的子类必须遵从,但是如果子类对这些非抽象方法任意修改,就会对整个继承体系造成破环。

    如果非要重写父类的方法,比较通用的方法是:原来的父类和子类都继承一个更加通俗的基类,原有的继承关系去掉,采用依赖、聚合、组合等关系代替;

    原则包含了一下四层含义:
    * 子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法;
    * 子类可以增加自己特有的方法;
    * 当子类的方法重载父类的方法时,方法的形参要比父类方法的输入参数更佳宽松;
    * 当子类的方法实现父类的抽象方法时,方法的返回值要比父类更加严格;


    依赖倒置原则 Dependence Inversion Principle

    定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象,其核心思想是依赖于抽象;

    问题由来:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来完成;这种场景下,类A一般是高层模块,负责复杂的业务逻辑;类B和类C是低层模块,负责基本的原则操作;假如修改类A,会给程序带来不必要的风险。

    解决方案:将类A修改为依赖接口I,类B和类C各自实现接口I,类A通过接口I来间接与类B和类C发生联系,则会降低修改类A的几率;

    在实际中,我们一般需要做到以下三点:
    * 低层模块尽量都要有抽象类或者接口,或者两者都有;
    * 变量的声明类型尽量是抽象类或者接口;
    * 使用继承时遵循里氏替换原则;


    接口隔离原则 Interface Segregation Principle

    定义:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上,否则将会造成接口污染;类A通过接口I依赖类B,类C通过接口I依赖类D,如果接口I对于类A和类B来说不是最小接口,则类B和类D必须去实现它们不需要的方法;

    原则的含义是:建立单一接口,不要建立庞大臃肿的接口,尽量细化接口,接口中的方法尽量少;就是说,我们要为每个类建立专用的接口,而不要试图去建立一个庞大的接口供所有依赖它的类去调用;

    注意,接口尽量小,但是要有限度,对接口进行细化可以提高程序设计灵活性,但是如果过小,则会导致接口数量尽量小,使设计复杂化。所以一定要适度,为依赖接口的类定制服务,只暴露给调用的类它需要的方法,它不需要的方法则隐藏起来;

    规则:
    * 一个接口只服务于一个子模块或业务逻辑,服务定制;
    * 通过业务逻辑压缩接口中的public方法,让接口看起来更加精悍;
    * 已经被污染了的接口,尽量修改,如果变更风险太大,则用适配器模式进行转化;
    * 根据具体的业务,深入了解逻辑,用心感知去控制设计思路;

    如何实施接口隔离,主要有两种方法:
    1. 委托分离,通过增加一个新的接口类型来委托客户的请求,隔离客户和接口的直接依赖,注意这同时也会增加系统的开销;
    2. 多重继承分离,通过接口的多重继承来实现客户的需求;


    迪米特法则

    定义:一个对象应该对其他对象保持最少的了解,其核心精神就是:不和陌生人说话,通俗之意就是一个对象对自己需要耦合关联调用的类应该知道的少;这会导致类之间的耦合度降低,每个类都尽量减少对其他类的依赖。


    合成复用原则

    原则是尽量使用合成/聚合的方式,而不是使用继承;

    开闭原则

    定义:一个软件实体如类、模版和函数应该对扩展,对修改关闭;

    解决方案:当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是修改已有的代码来实现变化;

    • 单一职责原则:实现类要职责单一;
    • 里氏替换原则:不要破坏继承体系;
    • 依赖倒置原则:面向接口编程;
    • 接口隔离原则:设计接口的时候要精简单一;
    • 迪米特法则:降低耦合;

    开闭原则:总纲,对扩展开放,对修改关闭;

    展开全文
  • C#登录窗体代码设计

    万次阅读 2017-10-12 23:23:27
    2.界面设计描述 本文主要是为了解决登录窗体与主窗体问题,所以不涉及复杂的功能,尽量简化操作界面与程序,就事论事,能够使浏览之人能够一眼知道我做了什么,以及能够快速获取帮助。 需要两个窗体Form1、...

    1.写作原因与解决的问题

    需要制作一个管理软件,涉及到登录界面与主界面问题。但是笔者通过阅读发现,大部分资料是用窗体Hide()方法隐藏登录界面进入主界面,这个方法的缺点是,会一直占用资源,于是我想换个思路。之后可以通过擦掉登录窗体进入主窗体,但是在退出,或者点击窗体右上角×按钮,要求效果完全退出程序,但是主界面一闪而过,虽然达到目的,却感觉别扭,强迫症犯了。所以琢磨、并不断尝试,终于得到如下方法,希望能够帮助到遇到我这种问题的网友,或者是学习登录-主窗体的朋友。

    2.界面设计描述

    本文主要是为了解决登录窗体与主窗体问题,所以不涉及复杂的功能,尽量简化操作界面与程序,就事论事,能够使浏览之人能够一眼知道我做了什么,以及能够快速获取帮助。

    需要两个窗体Form1、Form2,其中Form1作为登录界面,Form2作为主界面。

    一个textbox1控件,一个button1作为登录,一个button2作为退出。布局如下(一切简单起见,有完美强迫症的请自行美化):


    3.程序完整代码

    为了让网友能够直接运行本程序,所以我将公布完成程序代码,初学者尽可能都运行一遍。
    在Form1.cs中添加如下代码:   
            private void button1_Click(object sender, EventArgs e)
            {
                if (textBox1.Text == "1")
                {
                    this.Tag = "验证成功";
                    this.Close();
                }
                else
                {
                    MessageBox.Show("验证失败,请重新输入");
                    textBox1.Text = "";
                }
            }
            private void button2_Click(object sender, EventArgs e)
            {
                Application.Exit();
            }
            private void Form1_Load(object sender, EventArgs e)
            {
                this.Tag = "验证失败";
            }

    在Program.cs的main方法下,添加如下代码:

      

                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Form1 loginForm = new Form1();
                Application.Run(loginForm);
                if (loginForm.Tag.ToString() == "验证成功")
                {
                    Form2 mainForm = new Form2();
                    Application.Run(mainForm);
                }
                else
                {
                    Application.Exit();
                }


    4.测试

    调试程序。








    展开全文
  • BBS论坛系统网站,java毕业源代码设计,jsp程序MySQL,Myeclipse
  • 领域驱动设计DDD是一种设计思想,它可以同时指导中台业务建模和微服务设计(中台本质是业务模型,微服务是业务模型的系统落地),领域驱动设计强调领域模型和微服务设计的一体性,先有领域模型然后才有微服务,而不是...
  • 领域驱动实践总结二:架构分析与代码设计 领域驱动设计DDD是一种设计思想,它可以同时指导中台业务建模和微服务设计(中台本质是业务模型,微服务是业务模型的系统落地),领域驱动设计强调领域模型和微服务设计的一体...
  • 浅谈代码结构的设计

    万次阅读 2018-09-07 09:41:11
    本文来自网易云社区作者:陆秋炜引言 :很久之前,在做中间件...后来随着代码的增加,编写代码时,总有一些比较乖巧的方式,这就是之前不懂的“设计模式”。之前代码架构比较少(只是写一些测试工具),用不到这些...
  • HTML期末设计——代码

    万次阅读 多人点赞 2020-06-22 23:55:24
    我真的不厉害,这个网页设计也就是用了我学到的知识做的一个中规中矩的网页,可以给以后的大一新生们做个参考,和商业网站的效果肯定是没得比的,期望太高的可以关掉了,要严词批评我的请不要在我这说,当然,温柔的...
  • 《校园二手交易平台设计》原代码

    热门讨论 2011-10-14 17:31:04
    最近总有人要代码,sharing。。。。 ========================== 两年前做的课程设计,share 给需要的朋友 。
  • 用户注册登录界面设计+代码

    热门讨论 2011-10-12 22:00:50
    简单的用户注册登录界面设计+源代码,采用DIV+CSS结构,简洁
  • 23种设计模式(附代码样例)

    千次阅读 多人点赞 2018-03-27 11:07:45
    平常看的设计模式有很多,就强迫症的都总结起来。一、设计模式分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式...
  • 代码详解设计模式汇总

    万次阅读 2018-12-28 16:55:20
    小博代码详解设计模式 篇章 小博博客地址 简单工厂模式 点击前往 抽象工厂模式 点击前往 单例模式 点击前往 代理模式 点击前往 模板模式 点击前往 ...
  • 纯HTML个人简历模板代码

    万次阅读 多人点赞 2019-08-23 16:37:02
    <html> <body background=http://p1.so.qhmsg.com/t01ed5a885549b6bf3b.jpg> <table border="1" align="center" cellpadding="10" width="800">...th colspan="7" bgcolor="B...
  • 重构改善既有代码设计(github源码)

    千次阅读 2018-07-29 11:56:06
    refactoring improving the design of existing code(重构改善既有代码设计) https://github.com/CoderDream/refactoring-improving-the-design-of-existing-code
  • JAVA图形用户界面设计与实例 (源代码)

    千次下载 热门讨论 2007-05-15 11:10:25
    JAVA图形用户界面设计与实例 源代码 下载
  • html简单网页代码

    万次阅读 2020-03-02 14:41:10
    可以现在电脑中新建一个记事本,然后把后缀名改为“.html”就可以了,在顶部输入代码:“这是网页标题这里是网页显示的部分”,点击保存,然后右键文件选择使用浏览器打开就可以看到一个文件了,在每个标签之间最好...
  • C语言程序设计(全程实践)

    万人学习 2019-07-09 06:31:20
    C语言是非常流行的高级编程语言之一,是很多同学的入门编程语言,是建立编程思想的基础课程。 本视频课程是配合学生在学习了基本的理论课程的同时,进行编程实践,帮助初学者有效的进行上机实践,视频主要通过实例...
  • 用户中心-后台管理系统原型设计

    千次下载 热门讨论 2015-01-14 14:51:23
    附件为用户中心-后台管理系统原型设计,Axure RP原型设计文件文档
  • 学生个人介绍网页留白扩大设计设计思路知识点应用网页内容网页HTML代码网页效果网页作品源地址 设计思路 页边距采用留白扩大设计,给人视觉上感觉更安静典雅,更有格调跟品质感。底色为白色,主体内容区宽度为800PX...
  • web课程设计网页设计代码

    热门讨论 2011-09-01 22:21:54
    利用web网页设计技术(html+css+javascript)进行网站开发,含源代码 ,以及网页所用的图片,可做课程设计参考
  • 如何编写优秀的代码

    万次阅读 2019-07-17 18:01:20
    刚开始接触编程时,觉得写出来的代码能够达到对应的目标即可。但是慢慢的会发现,这样写出来的代码有点无厘头,而且时间长了再回头看自己的代码有种“陌生人”的感觉。而且优秀的程序员写代码总是会给人一种高效、...
  • C语言基础

    万人学习 2020-01-08 14:13:00
    C语言是目前世界上流行、使用最广泛的高级程序设计语言 6、很多编译器,几乎所有操作系统Windows,Linux,Unix的大部分代码都是C,C在背后做了很多东西的,也许开发游戏用C++,安卓用XX更为合适,图形界面的用其他...
  • 程序设计思路

    万次阅读 2017-11-03 16:49:31
    程序设计思路
  • CSS样式设计,其中有动画特效、渐变、图形图像、2D/3D转换特效、自适应网页设计等;JS包含核心语法、面向对象编程、复杂的项目案例、HTTP网络协议、AJAX前后端异步交互等;新型前端开发大部分回归原始开发,核心编程...
  • Java面试Offer直通车

    万人学习 2019-12-18 15:19:52
    课程采取录播模式,课程永久有效,可无限次观看 课件、课程案例代码完全开放给你,你可以根据所学知识,自行修改、优化 如何开始学习? PC端:报名成功后可以直接进入课程学习 移动端:CSDN 学院APP(注意不是CSDN ...
  • 高并发下的Nginx性能优化实战

    万人学习 2019-12-24 14:44:52
    CSDN 学院APP(注意不是CSDN APP哦) 本课程为录播课,课程永久有效观看时长,大家可以抓紧时间学习后一起讨论哦~ 【学员专享增值服务】 源码开放 课件、课程案例代码完全开放给你,你可以根据所学知识,自行修改、...
  • 面试之排序算法

    千人学习 2019-12-24 15:54:46
    排序算法是我们面试被问到最多的基础算法,本课程详细介绍了七种排序算法,包括插入排序、选择排序、冒泡...每种算法都详细介绍了核心思想、详细步骤、时间复杂度和代码实现,希望帮助大家深入理解排序算法,搞定面试!
  • 教你玩转HTML(html5)h5网页设计,网站开
  • C语言学生成绩管理系统源代码

    万次阅读 多人点赞 2018-03-21 20:27:20
    更多资源等着你 最新文章: 0、C语言学生成绩管理系统(课程设计报告书)★★★ 1、 C语言学生成绩管理系统源代码 ★★★★★ 2、 C语言学籍管理系统源代码 ★★ 3、C语言学生成绩管理系统设计 《C语言程序设计...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,188,141
精华内容 1,275,256
关键字:

代码设计