精华内容
下载资源
问答
  • 最近在开发一个C#项目,发现程序的内存占用飞速...从Form1到Form2界面切换原来代码如下: Form2 dlg = new Form2(); Dlg.show(); this.Hide(); 从子界面Form2返回Form1的代码如下: Form1 dlg = new Form1()

    最近在开发一个C#项目,发现程序的内存占用飞速上升。反复查找,终于定位到原因。由于在主界面和子界面切换过程中对于show语句使用不当所造成的。

    从Form1到Form2界面切换原来代码如下:

    Form2 dlg = new Form2();
    Dlg.show();
    this.Hide();


    从子界面Form2返回Form1的代码如下:

    Form1 dlg = new Form1();
    Dlg.show();
    this.Hide();


    在这儿其实,就会不停创建内存,开辟新的界面,从而导致内存急剧上升。Show是显示非模态窗体,经过修改和测试,在此类情况下,最好采用ShowDialog来显示模态窗体。经过修改的正确标准写法如下。

    从Form1到Form2界面切换原来代码如下:

    Form2 dlg = new Form2();
    this.Hide();
    dlg.ShowDialog();//子窗体只有关闭,才执行后面的语句
    this.Show();


    从子界面Form2返回Form1的代码如下:

    this.close();//直接关闭当前的Form2窗体


    经过这样修改后,测试发现内存没有不停增加。子窗体关闭后,占用内存得到释放。特意把该问题总结分享出来,希望对大家有帮助。

    展开全文
  • untiy切换界面窗口代码

    千次阅读 2015-01-17 14:34:08
    using UnityEngine; using System.Collections; public class ScreenWindowa : MonoBehaviour { int winNmu = 0; // Use this for initialization void Start () { ... // Update is called once per fra
    using UnityEngine;
    using System.Collections;
    
    public class ScreenWindowa : MonoBehaviour
    {
        int winNmu = 0;
    	// Use this for initialization
    	void Start () {
    	
    	}
    	
    	// Update is called once per frame
    	void Update () {
          
            if(winNmu==1)
            {
                Screen.SetResolution(1024,768,false);
                winNmu = 0;
            }
            else if(winNmu==2)
            {
                Screen.SetResolution(Screen.currentResolution.width-100, Screen.currentResolution.height - 100, false);
                winNmu = 0;
            }
            else if (winNmu == 3)
            {
                Screen.fullScreen = !Screen.fullScreen;
                winNmu = 0;
            }
            else 
            {
                return;
            }
    	
    	}
        void OnGUI() 
        {
            if (GUI.Button(new Rect(100, 100, 100, 100), "1024*768")) 
            {
                winNmu = 1;
            }
            else if(GUI.Button(new Rect(200,100,100,100),"1920*1080"))
            {
                winNmu = 2;
            }
            else if(GUI.Button(new Rect(300,100,100,100),"fullscreen"))
            {
                winNmu = 3;
            }
        }
    }
    

    展开全文
  • 随着图形界面内容的丰富,功能的增加,把所有的代码都放在一组 .h+.cpp+.ui,会让后期维护变得困难了,我们需要做的,就是每一个页面,就一组 .h+.cpp+.ui,具体实现,看代码代码结构ui 设计1、主界面ui 编

    一、前言

    Qt 使用 Qt Creator 编译器自带的 UI 图形界面设计,做一个简单的图形界面应用,速度快到起飞,功能比 JavaSwing 还强大多了,代码也是十分简洁的。

    随着图形界面内容的丰富,功能的增加,把所有的代码都放在一组 .h+.cpp+.ui,会让后期维护变得困难了,我们需要做的,就是每一个页面,就一组 .h+.cpp+.ui,具体实现,看代码

    二、代码结构

    这里写图片描述

    三、ui 设计

    1、主界面

    ui 编辑器内容

    这里写图片描述

    效果图

    这里写图片描述

    2、子菜单-工厂

    ui 编辑器内容

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3sSZbHbo-1571700930811)(https://img-blog.csdn.net/20180414153711344?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGFyZ2VyNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)]

    效果图
    这里写图片描述

    3、子菜单-品牌

    ui 设计

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UOJPlu8d-1571700930814)(https://img-blog.csdn.net/20180414154348307?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGFyZ2VyNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)]

    效果图

    这里写图片描述

    四、配置

    这里写图片描述

    #-------------------------------------------------
    #
    # Project created by QtCreator 2017-10-06T09:20:33
    #
    #-------------------------------------------------
    
    QT += core gui
    
    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
    
    TARGET = carmanager
    TEMPLATE = app
    
    
    SOURCES += main.cpp\
    widget.cpp \
    factory.cpp \
    brand.cpp
    
    HEADERS += widget.h \
    factory.h \
    brand.h
    
    FORMS += widget.ui \
    factory.ui \
    brand.ui
    
    

    五、main.cpp

    这里写图片描述

    #include "widget.h"
    #include <QApplication>
    
    int main(int argc, char *argv[])
    {
    QApplication a(argc, argv);
    Widget w;
    w.show();
    
    return a.exec();
    }
    
    

    六、主界面

    这里写图片描述

    #ifndef WIDGET_H
    #define WIDGET_H
    
    #include <QWidget>
    #include<brand.h>
    #include<factory.h>
    namespace Ui {
           class Widget;
    }
    
    class Widget : public QWidget
    {
           Q_OBJECT
    
    public:
           explicit Widget(QWidget *parent = 0);
           ~Widget();
    
           private slots:
           void on_buttonFactory_clicked();
    
           void on_buttonBrand_clicked();
    
           //处理来自Brand类的信号
           void hideBrand();
    
           //处理来自Factory类的信号
           void hideFactory();
    
    private:
           Ui::Widget *ui;
    
           Brand brand;
           Factory factory;
    };
    
    #endif // WIDGET_H
    

    这里写图片描述

    #include "widget.h"
    #include "ui_widget.h"
    
    Widget::Widget(QWidget *parent) :
           QWidget(parent),
           ui(new Ui::Widget)
    {
           ui->setupUi(this);
    
           connect(&brand, &Brand::returnMain, this, &Widget::hideBrand);
    
           connect(&factory, &Factory::returnMain, this, &Widget::hideFactory);
    }
    
    Widget::~Widget()
    {
           delete ui;
    }
    
    void Widget::on_buttonFactory_clicked()
    {
           this->hide();
           factory.show();
    }
    
    void Widget::on_buttonBrand_clicked()
    {
           this->hide();
           brand.show();
    }
    
    //定义处理来自Band的信号
    void Widget::hideBrand()
    {
           this->show();
           brand.hide();
    }
    //定义处理来自Factory的信号
    void Widget::hideFactory()
    {
           this->show();
           factory.hide();
    }
    

    七、工厂子界面

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kWuxz173-1571700930826)(https://img-blog.csdn.net/20180414154830918?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGFyZ2VyNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)]

    #ifndef FACTORY_H
    #define FACTORY_H
    
    #include <QDockWidget>
    
    namespace Ui {
           class Factory;
    }
    
    class Factory : public QDockWidget
    {
           Q_OBJECT
    
    public:
           explicit Factory(QWidget *parent = 0);
           ~Factory();
    
           private slots:
           void on_buttonReturn_clicked();
    
           //添加信号列表和信号
    signals:
           void returnMain();
    
    private:
           Ui::Factory *ui;
    };
    
    #endif // FACTORY_H
    

    这里写图片描述

    #include "factory.h"
    #include "ui_factory.h"
    
    Factory::Factory(QWidget *parent) :
           QDockWidget(parent),
           ui(new Ui::Factory)
    {
           ui->setupUi(this);
    }
    
    Factory::~Factory()
    {
           delete ui;
    }
    
    void Factory::on_buttonReturn_clicked()
    {
           //发送给主界面信号
           emit returnMain();
    }
    

    八、品牌子界面

    这里写图片描述

    #ifndef BRAND_H
    #define BRAND_H
    
    #include <QDockWidget>
    
    namespace Ui {
           class Brand;
    }
    
    class Brand : public QDockWidget
    {
           Q_OBJECT
    
    public:
           explicit Brand(QWidget *parent = 0);
           ~Brand();
    
           private slots:
           void on_buttonReturn_clicked();
    
           //添加信号列表和信号
    signals:
           void returnMain();
    
    private:
           Ui::Brand *ui;
    };
    
    #endif // BRAND_H
    

    这里写图片描述

    #include "brand.h"
    #include "ui_brand.h"
    
    Brand::Brand(QWidget *parent) :
           QDockWidget(parent),
           ui(new Ui::Brand)
    {
           ui->setupUi(this);
    }
    
    Brand::~Brand()
    {
           delete ui;
    }
    
    void Brand::on_buttonReturn_clicked()
    {
           //发送给主界面信号
           emit returnMain();
    }
    

    九、思考:

    ①子界面:有了 ui 的“转到槽”,则省略了槽的设计,直接在 .h 里面声明信号就可以了,接着在“转到槽”里面添加信号就完毕

    ②主界面:依旧在构造函数里边使用connect,依旧声明处理信号的槽函数,依旧定义处理信号的槽函数

    ③绝对优势:不用进行提升控件~!

    十、其他

    这里的 类似 on_buttonReturn_clicked() 函数、匹配的.xml,都是自动生成的,在 ui 编辑里边右击组件添加槽函数就会自动生成。

    只是内容是自己添加的,这就是 Qt 的强大之处

    展开全文
  • 关于java的GUI简单切换界面

    万次阅读 多人点赞 2019-03-26 20:00:57
    因此我上网看了一些代码,却发现网上的大多数代码都很繁琐,仔细看下去感觉有许多冗余,虽然哪些代码达到了切换界面的目的,但也有其它一些我暂时用不上的功能。 简而言之,就是网上这部分的代码不够精简。于是我...

    1.关于java的GUI简单切换界面

    在刚开始学习java的gui界面设计的时候因为课本上没有相关切换界面的介绍,所以如何进行简单的一个界面切换困扰了我很久。因此我上网看了一些代码,却发现网上的大多数代码都很繁琐,仔细看下去感觉有许多冗余,虽然那些代码达到了切换界面的目的,但也有其它一些我暂时用不上的功能。
    简而言之,就是网上这部分的代码不够精简。于是我开始单单把这一简单的功能剥离出来。废话不多说还是先上代码吧,想说的话都在注释里。 视图部分代码:

    import java.awt.BorderLayout;
    import javax.swing.*;
    
    public class View extends JFrame {
    	public void view()
    	{
    		ViewAction exwpAction=new ViewAction(this);//提前定义好动作对象
    		setLayout(new BorderLayout());//使用BorderLayout布局
    		setSize(400,400);//设置界面大小
    		this.setTitle("视图1界面");//设置界面名称
    		JButton eb=new JButton("视图2");//设置切换的按钮eb
    		JLabel tip_l=new JLabel("视图1",0);//界面的内容,这里用一个标签来替代具体内容,后面的“0”是为了使这个标签居中对齐
    		eb.addActionListener(exwpAction);//为eb这个按钮添加按键监听
    		add(tip_l, BorderLayout.CENTER);//将tip_l这个标签添加到布局的中间
    		add(eb, BorderLayout.SOUTH);//将按钮eb添加到布局的下方
    		setVisible(true);//使视图可视化
    	}
    	public void view2()
    	{
    		ViewAction exwpAction=new ViewAction(this);
    		setLayout(new BorderLayout());
    		setSize(400,400);
    		this.setTitle("视图2界面");
    		JButton eb=new JButton("视图1");
    		JLabel tip_l=new JLabel("视图2",0);
    		eb.addActionListener(exwpAction);
    		add(tip_l, BorderLayout.CENTER);
    		add(eb, BorderLayout.SOUTH);
    		setVisible(true);
    	}
    
    }
    
    

    动作部分代码:

    import java.awt.event.ActionEvent;
    
    public class ViewAction implements java.awt.event.ActionListener {
    	/*
    	 * 这一部分是因为我把界面和动作分开成两个类来写了才需要进行对象的传递如果动作和界面在一个对象中写的话就不需要传入对象了
    	 */
    	View v=new View();//先定义一个View对象在切换界面的时候会使用到
    	public ViewAction(View v)//将外界的View对象传入这个类里 
    	{
    		this.v=v;
    	}
    	public void actionPerformed(ActionEvent event)
    	{
    	Object object=event.getSource();//创建事件源对象
    	switch(event.getActionCommand()){
    	//如果按下视图1
    	case "视图1":
    		//这里之所以先创建新视图再关闭旧视图是因为反过来的话我们会发现延迟看上去会有一些难受
    		new View().view();//new一个View类并调用里面的view函数
    		v.setVisible(false);//关闭穿进来的那个类的视图
    		break;
    	//如果按下视图2
    	case "视图2":
    		new View().view2();
    		v.setVisible(false);
    		}
    	}
    
    }
    
    

    主类部分代码:

    public class Main {
    	public static void main(String[] args) {
    		View v=new View();
    		v.view();
    	}
    
    }
    

    运行效果:
    运行主类后:
    在这里插入图片描述
    点击视图2后
    在这里插入图片描述
    点击视图1后
    在这里插入图片描述

    展开全文
  • 跳转实现思路主程序相当于桌子:import tkinter as...每个界面采用类的方式定义各自的控件和函数,每个界面都建立在一个各自定义的Frame上,那么在实现跳转界面的效果时,只需要调用tkinter.destroy()方法销毁旧界面...
  • LittlevGL 切换界面的演示

    千次阅读 2020-04-13 14:41:10
    其实 lvgl 切换界面不是很难,只需要下面几行代码即可实现: lv_obj_t* btn1,* btn2; lv_obj_t* current_app_obj_user=NULL; #define LV_DESKTOP lv_disp_get_scr_act(NULL) /******************...
  • pyqt5 多窗口界面切换 登录界面切换

    千次阅读 2020-04-03 09:50:17
    pyqt5 多窗口界面切换 登录界面切换 代码参考1: https://github.com/Damon0626/My-Projects/blob/master/10-PyQT5%20Pages%20Switching/01-Pages_Switching.py # -*-coding:utf-8-*- # @Author: Damon0626 # @Time :...
  • android Tab类型切换界面

    千次下载 热门讨论 2015-01-13 20:49:44
    Android中Tab类型界面总结。 viewpager + fragment + fragmentPagerAdpater + PagerTitleStrip
  • 如何在vb中使用模块代码的方式input给界面切换对应的变量?怎么实现启动和界面变量迅速切换操作?
  • viewpager里面有3个view,分别为消息、通话、视频对应的view,这里为了区分开来,暂且用1、2、3来标识三者,用手指左右滑动viewpager或点击顶部的tab,就会分别切换消息、通话、视频界面,完整的应该如下: ...
  • vscode切换界面布局

    千次阅读 2018-11-16 08:40:00
    鼠标操作 view》Appearance》Toggle Panel Position 调整控制面板在界面底部 或者界面右侧   2.编辑区分布  鼠标操作 view》Editor Layout》Split Up编辑器水平分开,显示在上侧 view》Editor Layout》...
  • AngularJs登录界面代码

    千次阅读 2017-10-15 20:20:38
    angular.module("myApp",[]).controller("myCtrl",function($scope){  $scope.list=[];  $scope.add = function(){  var i = {  name:$scope.name,  age:
  • QT 登录界面界面 切换 仿TIM

    千次阅读 2018-01-24 17:54:11
    QT 登录界面界面 切换 一 环境搭建 平台是vs2012 Qt5.2.1 属于QWidget窗口 在项目里又添加了QMainwindow窗口 二 编写代码 QWidget的窗口名是loginwindow,QMainwindow的窗口名是...
  • jquery后台登录页面背景图片自动轮换登录界面代码
  • 安卓之点击按钮切换界面(Activity)

    千次阅读 2019-12-10 21:16:08
    由A界面切换到B界面代码如下 Intent intent=new Intent(this,DisplayMessageActivity.class); startActivity(intent); B界面显示的代码 Intent intent=getIntent(); 接下来介绍一个函数 intent.putExtra...
  • H5 切换界面返回传值

    千次阅读 2018-02-01 18:40:06
    主要阐述下返回传值的知识,在...1.html文件必不可少的,监听到点击切换事件(A界面); li class="mui-table-view-cell" id="cheziinfo"> a class="mui-navigate-right">img src="images/aichename/car.png"/ style
  • 网上看到的都是在一个界面上使用同一个按钮实现界面切换,这里我来做个不同界面上的不同按钮实现界面切换。...代码如下:第一个界面叫DataManage,其xmal:&lt;UserControl x:Class="MyControlLibrarys...
  • wpf 界面切换

    千次阅读 2018-04-03 10:39:43
    界面切换和窗口跳转是所有桌面程序都需要的。 wpf里面也有很多方法来做到界面切换,简单常用的有TabControl和UserControl。 TabControl 优点是简单,继续拖控件。 缺点就是全部代码会堆到一起。 代码 &...
  • 在学习QT的过程中想到能不能实现类似Android的Freagment,点击按钮在一个窗口中跳转多个界面 创建工程 创建工程时将累信息——基类——修改为QWidget,不然会出现运行之后窗口上不显示内容的问题 mywidget.h文件 ...
  • QT界面切换

    千次阅读 多人点赞 2015-12-08 22:15:26
    回弹效果应用场景在开发桌面应用的时候,经常性的会在几个界面之间切换 可以是局部的,也可以是整个界面 以前我总是利用hide和show来完成 但是很缺乏动态的美感,用户在使用的时候体验不好 今天就来解决这个问题...
  • 1、在widget.h中添加子界面头文件#include "widget.h" #ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include <QDebug> //调试输出到控制台头文件 #include <QMessageBox> //消息提示...
  • unity界面代码分离解决方案

    千次阅读 2019-06-10 21:10:12
    新手或者小规模的游戏喜欢使用SetActive或者Instantiate prefab来切换界面,这样可以,但是不灵活,也不规范,碰到大量代码的时候就会力不从心。 所谓界面与代码分离也就是将界面用代码封装起来,再通过一个管理器来...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 277,166
精华内容 110,866
关键字:

如何切换界面的代码