精华内容
下载资源
问答
  • 类似OpenFileDialog的。 工作需要比较丰富的功能和可以自定义的风格,所以微软自带的不能用,自己写的话又点儿来不及。。
  • 如题,用的VC6.0对话框程序,所有的控件都在一个界面上,需要显示的显示出来,其他的隐藏。 但在添加到255个控件以后就出现无法添加的现象,于是在VS2010对话框程序上做了实验...对程序的危害有哪些???谢谢了!!!
  • Windows的对话框

    2013-04-18 18:08:47
    Windows的对话框根据其与父窗口的关系,可分为模式对话框与无模式对话框两类。 模式(modal)对话框:...对话框模版:是在RC文件中定义的一个对话框,以各种方式决定对话框的大小、有哪些控件、各在什么位置等。 对话

    Windows的对话框根据其与父窗口的关系,可分为模式对话框与无模式对话框两类。

    模式(modal)对话框:当该类对话框运行时,其父窗口无效,直到该对话框结束。

    无模式(modeless)对话框:该类对话框可与父窗口共同运行。

     

    一个完整的对话框一般包含对话框面板与函数两部分:

    对话框模版:是在RC文件中定义的一个对话框,以各种方式决定对话框的大小、有哪些控件、各在什么位置等。

    对话框函数:其函数原型非常类似于窗口函数。但是它通常只处理WM_INITDIALOG和WM_COMMAND两个消息。对话框中的各个控件也都是小窗口,各有对应的窗口函数,它们通过消息传递与其父窗口沟通。而所有的控件传来的消息都是WM_COMMAND,再根据其参数分辨是哪一种控件以及哪一种消息。

     

    原型:int DialogBox ( HINSTANCE hInstance, LPCTSTR IpTemplate, HWND hWndParent, DLGPROC IpDialogFunc)

    参数:第一个参数hInstance用于标识应用程序的实例,该程序的可执行文件含有对话框模版。

                第二个参数IpTemplate用于标识对话框模版,此参数可以是指向一个以NULL结尾的字符串的指针,该字符串指定对话框模版名,也可以是指定对话框模版的资源标识符中的一个整型值。

               第三个参数hWndParent用于指向该对话框的父窗口。

               第四个参数lpDialogFunc表示一个指向对话框过程的指针。

     

    如果函数调用成功,则返回非0值,其为函数EndDialog()的调用中的nResult参数。

    如果函数调用失败,则返回值为0。

    展开全文
  • 那么,接下来,我们需要了解一下PyQt5有哪些控件可以供我们使用。 一般来说,涉及到UI编程,会用到的控件无非就是如下几种类型:标签、文本框、按钮、下拉框、对话框、计数器、滑动条、分隔线、图像绘制控件、多媒体...

    上一集简单介绍了PyQt5的自定义信号与信号断开。那么,接下来,我们需要了解一下PyQt5有哪些控件可以供我们使用。

    一般来说,涉及到UI编程,会用到的控件无非就是如下几种类型:标签、文本框、按钮、下拉框、对话框、计数器、滑动条、分隔线、图像绘制控件、多媒体播放控件、日历控件、日期时间控件等等。

    本文主要是介绍几种常用的控件:标签、文本框、下拉框、按钮、对话框。

    标签(QLabel)

    这个控件主要是显示文字,在第二集的自定义信号中已经出现过,在此就不再重复讲解。
    传送门 >>> 标签控件的用法

    文本框

    常见的控件之一,用户UI交互输入和展示的主要控件。文本框可以分为单行文本框与多行文本框,比如账号密码的输入框就是单行文本框,可以输入文章的文本框就是多行文本框。

    单行文本框(QLineEdit)

    在之前代码的init_ui函数中,添加如下代码即可查看效果:

            self.label_1 = MyLabel(self, (10, 10, 100, 20), 'label_1', '我是标签:')
            self.line_edit = QLineEdit(self)
            self.line_edit.setObjectName('line_edit')
            self.line_edit.setGeometry(70, 10, 100, 20)
            self.line_edit.setText('我是单行文本框')
            # self.line_edit.setPlaceholderText('我是单行文本框')  # 自己看看是什么效果
    

    单行文本框

    多行文本框(QTextEdit)

            self.text_edit = QTextEdit(self)
            self.text_edit.setObjectName('text_edit')
            self.text_edit.setGeometry(10, 30, 100, 60)
            self.text_edit.setText('我是\n多行\n文本框')
    

    多行文本框
    看到这个多行文本框,我的第一反应是,咦?光标怎么在第一行的开头!这能忍?至于你能不能忍,反正我是不能。于是,在网上借鉴了一位兄台的代码(代码来源地):

            cursor = self.text_edit.textCursor()
            pos = len(self.text_edit.toPlainText())
            cursor.setPosition(pos)
            self.text_edit.ensureCursorVisible()
            self.text_edit.setTextCursor(cursor)
    

    光标在最后一行的末尾

    下拉框(QComboBox)

    下拉框是展示数据常用的控件,不能输入,只能选择。

            self.combox = QComboBox(self)
            self.combox.setObjectName('combox')
            self.combox.setGeometry(70, 10, 40, 20)
            datas = ['111', '222', '222', '333']
            self.combox.addItems(datas)
    

    此时你是不是会思考,这个下拉框点击了之后呢?然后就没有然后了吗?肯定要把当前选择的数据进行处理吧?正是如此:

            # 这一段就不用注释讲解了,如果看不懂,就再看看第一集的文章吧!
            def do_something():  # 仅作示范使用的函数
                idx = self.combox.currentIndex()
                QMessageBox.information(self, '哈哈哈', '你点了%s!' % datas[idx])
            # 这里activated可以换成currentTextChanged、currentIndexChanged试试效果
            self.combox.activated.connect(do_something)
    

    下拉框及消息响应

    按钮

    最常见的控件,没有之一!形式也有很多种,这里我就不一一介绍了,常用的几种类型如下:
    QPushButton,这个就是最普通的按钮了,你想编写一个计算器的话,就需要创建很多个这样的按钮了。使用方法见:第一集的文章

    QRadioButton,单选按钮,点击时切换状态,即checked和unchecked。此控件支持2种信号:toggled和clicked。toggle信号在切换单选钮状态时发射,clicked信号在每次点击时都会发射。

    QCheckBox,复选按钮,提供多种选择的按钮,被选中或取消选中,都会发射一个stateChaged信号。
    下面看看单选和复选按钮如何创建:

            self.radio_btn = QRadioButton(self)
            self.radio_btn.setObjectName('radio_btn')
            self.radio_btn.setGeometry(120, 10, 100, 20)
            self.radio_btn.setText('我是单选按钮')
    
            self.check_btn = QCheckBox(self)
            self.check_btn.setObjectName('check_btn')
            self.check_btn.setGeometry(120, 30, 100, 20)
            self.check_btn.setText('我是复选按钮')
    

    单选按钮和复选按钮
    至于如何使用,大家结合第一集中的消息响应来自行尝试吧!总有需要自己动手的地方不是吗?
    (其实是我实在是lan de写了,单选按钮一般都要有一个组合,然后还需要设置互斥,如果不设置互斥,那么除了长相更○之外,和复选按钮就没有什么区别了。。。)

    对话框

    其实在上面的例子里已经有用到对话框了,所以,我在这里也就不多做讲解了。直接贴一段对话框的代码吧!

        # 提示对话框
        def message_box(self, text, title='Info'):
            if title.lower() in ['error', '错误']:
                QMessageBox.critical(self.centralwidget, title, text)
            elif title.lower() in ['warning', '警告']:
                QMessageBox.warning(self.centralwidget, title, text)
            else:
                QMessageBox.information(self.centralwidget, title, text)
    
        # 询问对话框
        def slotQuestion(self):  
            button=QMessageBox.question(self, "Question",
                                        self.tr("是否从头查找?"),
                                        QMessageBox.Ok|QMessageBox.Cancel,
                                        QMessageBox.Ok)
            if button==QMessageBox.Ok:
                self.label.setText("Question button/Ok")
            elif button==QMessageBox.Cancel:
                self.label.setText("Question button/Cancel")
            else:  
                return 
    
        # 带3个按钮的警告对话框
        def slotWarning(self):  
            button=QMessageBox.warning(self,"Warning",  
                                       self.tr("是否保存对文档的修改?"),  
                                       QMessageBox.Save|QMessageBox.Discard|QMessageBox.Cancel,  
                                       QMessageBox.Save)  
            if button==QMessageBox.Save:  
                self.label.setText("Warning button/Save")  
            elif button==QMessageBox.Discard:  
                self.label.setText("Warning button/Discard")  
            elif button==QMessageBox.Cancel:  
                self.label.setText("Warning button/Cancel")  
            else:  
                return
    
        # 关于对话框
        def slotAbout(self):  
            QMessageBox.about(self,"About",self.tr("About示例"))  
            self.label.setText("About MessageBox")
    
        # 关于QT的对话框  
        def slotAboutQt(self):  
            QMessageBox.aboutQt(self,"About Qt")  
            self.label.setText("About Qt MessageBox") 
    

    总结

    今天的文章写得有点长,有点啰唆,希望大家能看明白!
    下一集,我们将讲解一下PyQt5如何创建自定义控件!这个网上的教程比较少,敬请期待!

    展开全文
  • 对话框一共三个按键: setPositiveButton确认;setNegativeButton取消;setNeutralButton一般 中间的询问内容可以是setMessage也可以是控件(setView/ setMultiChoiceItems/ setItems),还可以是自定义的一个布局。 ...

    对话框一共有三个按键:

    setPositiveButton确认;setNegativeButton取消;setNeutralButton一般

    中间的询问内容可以是setMessage也可以是控件(setView/ setMultiChoiceItems/ setItems),还可以是自定义的一个布局。

    测试过可以直接使用,但是在Eclipse中提示代码有问题,那就是你的引用问题,如:DialogInterface.OnClickListener()


    //创建对话框方法dialog()
    	  protected void dialog() {
    	    AlertDialog.Builder builder = new Builder(Main.this);
    	    builder.setMessage("确认退出吗?");
    	    builder.setTitle("提示");
    	    builder.setPositiveButton("确认", new OnClickListener() {
    	     @Override
    	     public void onClick(DialogInterface dialog, int which) {
    	      dialog.dismiss();
    	      Main.this.finish();
    	     }
    	    });
    	    builder.setNegativeButton("取消", new OnClickListener() {
    	     @Override
    	     public void onClick(DialogInterface dialog, int which) {
    	      dialog.dismiss();
    	     }
    	    });
    	    builder.create().show();
    	   }
    	   
    	  //在onKeyDown(int keyCode, KeyEvent event)方法中调用此方法
    	  public boolean onKeyDown(int keyCode, KeyEvent event) {
    	    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
    	     dialog();
    	    }
    	    return false;}
    


    //改变了对话框的图表,添加了三个按钮
    	Dialog dialog = new AlertDialog.Builder(this).setIcon(
    	     android.R.drawable.btn_star).setTitle("喜好调查").setMessage(
    	     "你喜欢李连杰的电影吗?").setPositiveButton("很喜欢",
    	     new OnClickListener() {
    	      @Override
    	      public void onClick(DialogInterface dialog, int which) {
    	       // TODO Auto-generated method stub
    	       Toast.makeText(Main.this, "我很喜欢他的电影。",
    	         Toast.LENGTH_LONG).show();
    	      }
    	     }).setNegativeButton("不喜欢", new OnClickListener() {
    	    @Override
    	    public void onClick(DialogInterface dialog, int which) {
    	     // TODO Auto-generated method stub
    	     Toast.makeText(Main.this, "我不喜欢他的电影。", Toast.LENGTH_LONG)
    	       .show();
    	    }
    	   }).setNeutralButton("一般", new OnClickListener() {
    	    @Override
    	    public void onClick(DialogInterface dialog, int which) {
    	     // TODO Auto-generated method stub
    	     Toast.makeText(Main.this, "谈不上喜欢不喜欢。", Toast.LENGTH_LONG)
    	       .show();
    	    }
    	   }).create();dialog.show();
    
    //信息内容是一个简单的View类型
    	new AlertDialog.Builder(this).setTitle("请输入").setIcon(
    	     android.R.drawable.ic_dialog_info).setView(
    	     new EditText(this)).setPositiveButton("确定", null).setNegativeButton("取消", null).show();
    

    new AlertDialog.Builder(this).setTitle("复选框").setMultiChoiceItems(
    		     new String[] { "Item1", "Item2" }, null, null)
    		     .setPositiveButton("确定", null).setNegativeButton("取消", null).show();
    

    //信息内容是一组多选框
    	new AlertDialog.Builder(this).setTitle("单选框").setIcon(
    	     android.R.drawable.ic_dialog_info).setSingleChoiceItems(
    	     new String[] { "Item1", "Item2" }, 0,
    	     new DialogInterface.OnClickListener() {
    	      public void onClick(DialogInterface dialog, int which) {
    	       dialog.dismiss();
    	      } }).setNegativeButton("取消", null).show();
    

    new AlertDialog.Builder(this).setTitle("列表框").setItems(
    		     new String[] { "Item1", "Item2" }, null).setNegativeButton("确定", null).show();
    
    //信息内容是一个自定义的布局
    	//1.布局文件
    	<?xml version="1.0" encoding="utf-8"?>
    	<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    	 android:layout_height="wrap_content" android:layout_width="wrap_content"
    	 android:background="#ffffffff" android:orientation="horizontal"
    	 android:id="@+id/dialog">
    	 <TextView android:layout_height="wrap_content"
    	   android:layout_width="wrap_content"
    	  android:id="@+id/tvname" android:text="姓名:" />
    	 <EditText android:layout_height="wrap_content"
    	  android:layout_width="wrap_content" android:id="@+id/etname" android:minWidth="100dip"/>
    	</LinearLayout>
    	//2.调用代码
    	LayoutInflater inflater = getLayoutInflater();
    	   View layout = inflater.inflate(R.layout.dialog,
    	     (ViewGroup) findViewById(R.id.dialog));
    	   new AlertDialog.Builder(this).setTitle("自定义布局").setView(layout)
    	     .setPositiveButton("确定", null).setNegativeButton("取消", null).show();
    

    8 以上几种对话框有点难了吧(初学者),这是种简单的提示框(为什么简单?因为代码和打开一般的界面一样)

    //1. 为什么简单?因为代码和打开一般的界面一样
    		bOpenCD = (Button) findViewById(R.id.maOpenCD);
    		bOpenCD.setOnClickListener(new OnClickListener() {
    			public void onClick(View v) {
    				Intent myIntent = new Intent();
    				myIntent.setClass(MainActivity.this, CustomDialog.class);
    				MainActivity.this.startActivity(myIntent);
    			}
    		});
    	//2.修改manifest文件
            <activity
                android:name=".CustomDialog"
                android:label="@string/CDlable" 
                android:theme = "@android:style/Theme.Dialog"><!-- @style/Transparent -->
            </activity>
    

    9透明提示窗体

    摘于http://blog.csdn.net/sodino/article/details/5822147

    //1.先在res/values下建colors.xml文件,写入
    <resources>
        <color name="transparent">#9000</color>
    </resources>
    //这个值设定了整个界面的透明度,为了看得见效果,现在设为透明度为56%(9/16)左右。
    
    //2.再在res/values/下建styles.xml,设置程序的风格
    <resources>
        <style name="Transparent">
            <item name="android:windowBackground">@color/transparent</item>
            <item name="android:windowIsTranslucent">true</item>
            <item name="android:windowAnimationStyle">@+android:style/Animation.Translucent</item>
        </style>
    </resources>
    //3.最后一步,把这个styles.xml用在相应的Activity上。即在AndroidManifest.xml中的任 意<activity>标签中添加
    <activity
                android:name=".CustomDialog"
                android:label="@string/CDlable" 
                android:theme = "@style/Transparent"><!--  @android:style/Theme.Dialog-->
            </activity>
    










    展开全文
  • MFC中删除控件的操作

    万次阅读 2016-12-16 17:30:31
    1.首先确定控件有哪些相关的变量和函数;打开.rc2文件在里面删除对应的控件图标; 2.打开主对话框头文件;(一般类向导生成的函数和变量定义都在头文件的最后一个“public”l里);找到生成的变量定义和函数定义将其...

    一:手动删除

    1.首先确定控件有哪些相关的变量和函数;打开.rc2文件在里面删除对应的控件图标;

    2.打开主对话框头文件;(一般类向导生成的函数和变量定义都在头文件的最后一个“public”l里);找到生成的变量定义和函数定义将其删除;

    3.打开对话框源文件,找到控件定义的处理函数,将其删除(也可在最开始时双击控件按钮找到定义函数进行删除)

    4.在BEGIN_MESSAGE_MAP()消息映射函数里,将控件对应的消息函数删除(一般有有波浪线标志)

    5.最后删除变量的数据交换语句;在void CTestDlg::DoDataExchange(CDataExchange* pDX)函数里;这里的test为自定义的函数。


    二:通过类向导删除


    1.打开.rc文件;找到欲删除的控件;选中控件后按右键;选择“类向导”;在类向导页面找到控件对应的消息、成员变量,选中后点击“删除处理程序”;

    此时在源文件里变量的定义声明、数据交换函数的相关语句、消息映射中的信息都被注释了。

    2.在对话框内删除控件。


    展开全文
  • mfc如何干净的删除控件

    千次阅读 2019-07-16 00:08:27
    1.首先确定控件有哪些相关的变量和函数;打开.rc2文件在里面删除对应的控件图标; 2.打开主对话框头文件;(一般类向导生成的函数和变量定义都在头文件的最后一个“public”l里);找到生成的变量定义和函数定义将其...
  • 一般Web界面包括的界面控件有:单行文本框、多行文本框、密码文本框、下拉列表Combobox、日期输入控件、数值输入控件、单项选择、复选框、表格控件DataGrid、树形控件、布局控件、弹出式对话框、提示信息、列表控件...
  • mfc 获取对话框子控件

    2021-04-09 11:33:38
    需要通过代码获取对话框上都有哪些控件 CWnd* pChild = GetWindow(GW_CHILD); while(pChild) { pChild = pChild->GetWindow(GW_HWNDNEXT); //筛选特殊类型 if(pChild && pChild->IsKindOf...
  • 页面设置控件

    2018-04-24 10:06:00
    WIndows打印技术 在Windows应用程序中文档的打印是一项...页面设置有哪些内容? 设置边框和边距调整量,页眉和页脚以及打印方向。 通过PageSetUpDialog控件实现,它是一个预先配置的对话框,用于在基于Windo...
  • MFC/面向对话框 : 回归本质 – “消息控制” – 好好学习了一下怎样通过消息控制通用控件ListBox 一.listbox添加列 用到结构体:LVCOLUMN column 一般在头文件<tlhelp32.h>定义 typedef struct _LVCOLUMN { ...
  • 最近我在做一个项目,在一个对话框很多控件。 此对话框可在不同的用户交互和不同的交互上显示一些 此对话框控件变为启用,有些变为禁用。 为此,我必须基于一些变量来决定要启用哪些控件 或致残。如。 隐藏,...
  • 对话框用户界面程序的编写,如何向对话框控件联接数据成员及其实现机理,如何向对话框控关联控件类,如何利用对话框类的成员函数向控件发送消息和获取对话框控件的类指针,如何直接利用对话框控件类操纵对话框控件...
  • 我们知道,一般Web界面包括的界面控件有:单行文本框、多行文本框、密码文本框、下拉列表Combobox、日期输入控件、数值输入控件、单项选择、复选框、表格控件DataGrid、树形控件、布局控件、弹出式对话框、提示信息...
  • 一般Web界面包括的界面控件有:单行文本框、多行文本框、密码文本框、下拉列表Combobox、日期输入控件、数值输入控件、单项选择、复选框、表格控件DataGrid、树形控件、布局控件、弹出式对话框、提示信息、列表控件...
  • 第35周一

    2014-08-25 22:31:00
    和现有系统的测试尤其是自动化测试验证方法,一个是在ie下模态对话框控件获取焦点后挡住的问题,突然想到我是否可以判断其失去焦点后自动再获取焦点类似拖动的效果-问题是那些元素失去焦点设置焦点相关的事件。...
  • 第4章 Windows;...如何获知一个窗体中有哪些控件;如何获得当前光标的位置;一个窗体的初始位置;最小化窗体;让窗体最小化的时候不在任务栏出现 ;显示多个窗体;关闭一个窗体 ;窗体中控件相对窗体的布局
  • 如何获知一个窗体中有哪些控件;如何获得当前光标的位置;一个窗体的初始位置;最小化窗体;让窗体最小化的时候不在任务栏出现 ;显示多个窗体;关闭一个窗体 ;窗体中控件相对窗体的布局方式 ;多文档界面MDI Forms ;文本框...
  • Visual C++ 完全自学宝典 (部分章节) 电子书 PDF 强锋科技 朱洪波 第1篇 C++程序设计语言入门  第1章 C++程序设计语言概述  1.1 C++和C#、Java的区别  1.1.1 面向对象还是面向... 15.20 有哪些兼容MFC的界面库
  • VC++常用功能实例

    2010-01-25 23:28:46
    问:RichEdit控件对话框无法正常显示? 79 问:DLL中的模板成员函数? 79 问:CFormView中的上下文帮助? 80 问:CArchive类的WriteObject函数问题? 80 问:RegisterWindowMessage中的BroadcastSystemMessage如何...
  • 问:RichEdit控件对话框无法正常显示? 79 问:DLL中的模板成员函数? 79 问:CFormView中的上下文帮助? 80 问:CArchive类的WriteObject函数问题? 80 问:RegisterWindowMessage中的BroadcastSystemMessage如何...
  • wxPython学习手册

    热门讨论 2014-04-19 08:01:58
    12.3.4 预定义的颜色名有哪些? 392 12.4 本章小结 392 第三部分 高级wxPython 394 13 建造列表控件并管理项目 395 13.1 建造一个列表控件 395 13.1.1 什么是图标模式? 396 13.1.2 什么是小图标模式? 397 13.1.3 ...
  • 什么是ANR,造成ANR的原因有哪些?网上很多,这里我就不介绍了。 下面我就以一个实战例子直奔主题: 一:首先当我们手机里运行的某个APP发生了ANR,系统会将当前APP的运行日志写入到sd卡的 data/anr 目录中。 比如...
  • 引起LNK2001的常见错误都有哪些 如何调试Windows外壳扩展程序(Shell Extension) 如何调试一个没有原码的exe文件调用的 dll 怎样设置栈的大小 如何知道GetLastError()返回的错误代码的意义 如何使用Visual C++ 6.0...

空空如也

空空如也

1 2 3 4 5
收藏数 94
精华内容 37
关键字:

对话框控件有哪些