精华内容
下载资源
问答
  • 对话框和窗口的不同之处在于
    千次阅读
    2019-05-11 15:22:58

    MFC中对话框有两种形式,一个是模态对话框(model dialog box),一个是非模态对话框(modeless dialog box)。二者的区别在于当对话框打开时,是否允许用户进行其他对象的操作。

    一、模态对话框(model dialog box)

    在程序运行的过程中,若出现了模态对话框,那么主窗口将无法发送消息,直到模态对话框退出才可以发送。点击模态对话框中的OK按钮,模态对话框会被销毁。

    创建一个模态对话框的代码:

    //创建一个模态对话框  
    CTestDialog td;  
    td.DoModal();   
    

    其中CTestDialog为我自己所新建和一个对话框资源相关联的对话框类。

    可以创建一个布局模态对话框类变量,不用担心它会随着所在函数返回而被销毁。因为DoModal()函数的一个功能是,当前只能运行此模态对话框,且停止主窗口的运行,直到模态对话框退出,才允许主窗口运行。

    DoModal()函数也有显示对话框的功能,所以也无需调用其他函数来显示对话框。

    二、非模态对话框(modaless dialog box)

    在程序运行的过程中,若出现了非模态对话框,主窗口还可以发送消息。

    点击非模态对话框中的OK按钮,非模态对话框没有销毁,只是隐藏了。若想点击OK按钮时,非模态对话框也销毁,那么CTestDialog类必须重载其基类CDialog的虚函数OnOK(),在此函数里调用DestroyWindow()来销毁此对话框。

    要建立非模态对话框需要调用两个函数Create()ShowWindow()

    若和上面一样的方式创建一个非模态对话框:

    CTestDialog td;  
    td.Create(IDD_DIALOG1); //创建一个非模态对话框  
    td.ShowWindow(SW_SHOWNORMAL); //显示非模态对话框  
    

    那么,在运行时,你会发现此对话框无法显示。这是因为你声明的对话框变量td是局部变量,但这个函数返回时,td也被析构了,所以无法显示此对话框。

    创建非模态对话框,必须声明一个指向CTestDialog类的指针变量,且需要显示的调用ShowWindow()才能将对话框显示出来。有两种创建方法:

    1. 采用局部变量创建一个非模态对话框

       //采用局部变量创建一个非模态对话框  
       CTestDialog *pTD = new CTestDialog();  
       pTD->Create(IDD_DIALOG1); //创建一个非模态对话框  
       pTD->ShowWindow(SW_SHOWNORMAL); //显示非模态对话框  
      

      因为指针在声明的时候是被放在堆栈中,只有整个应用程序关闭后才会被销毁,所以可以正常显示对话框。这种方法虽然不影响程序的运行,可是指针pTD所指向的内存却导致不可用,这样的编程很不好。

    2. 采用成员变量创建一个非模态对话框

      首先在你所要编写的类的头文件中声明一个指针变量:

       private:  
       	CTestDialog *pTD;  
      

      然后再在相应的CPP文件,在你要创建对话框的位置添加如下代码:

       //采用成员变量创建一个非模态对话框  
       pTD = new CTestDialog(); //给指针分配内存  
       pTD->Create(IDD_DIALOG1); //创建一个非模态对话框  
       pTD->ShowWindow(SW_SHOWNORMAL); //显示非模态对话框  
      

      最后在所在类的析构函数中收回pTD所指向的内存:

       delete pTD;  
      

    三、销毁的区别

    模态对话框的销毁是使用EndDialog,而非模态对话框的销毁是使用DestroyWindow。所以我们在销毁对话框的时候,也要对其进行区别。

    非模态对话框,用户关闭对话框时,对话框消息处理函数将收到WM_CLOSE消息,接到后调用DestroyWindow以销毁非模态对话框。

    模态对话框,则一般响应IDOKIDCANCEL。在PPC上,我们对于OK键和X键的处理要注意这点。

    四、注意事项

    非模态对话框对象是用new操作符在堆中动态创建的,而不是以成员变量的形式嵌入到别的对象中或以局部变量的形式构建在堆栈上。通常应在对话框的拥有者窗口类内声明一个指向对话框类的指针成员变量,通过该指针可访问对话框对象。

    通过调用Create函数来启动对话框,而不是DoModal,这是非模态对话框的关键所在。由于Create函数不会启动新的消息循环,对话框与应用程序共用同一个消息循环,这样对话框就不会垄断用户的输入。Create在显示了对话框后就立即返回,而DoModal(模态对话框)是在对话框被关闭后才返回的。众所周知,在MFC程序中,窗口对象的生存期应长于对应的窗口,也就是说,不能在未关闭屏幕上窗口的情况下先把对应的窗口对象删除掉。由于在Create返回后,不能确定对话框是否已关闭,这样也就无法确定对话框对象的生存期,因此只好在堆中构建非模态对话框对象,而不能以局部变量的形式来构建之。

    因为是用new操作符构建非模态对话框对象,因此必须在对话框关闭后,用delete操作符删除对话框对象。

    必须有一个标志表明非模态对话框是否是打开的。这样做的原因是用户有可能在打开一个模态对话框的情况下,又一次选择打开命令。程序根据 标志来决定是打开一个新的对话框,还是仅仅把原来打开的对话框激活。通常可以用拥有者窗口中的指向对话框对象的指针作为这种标志,当对话框关闭时,给该指 针赋NULL值,以表明对话框对象已不存在了。

    更多相关内容
  • PyQt主窗口对话框

    千次阅读 2022-01-21 16:50:52
    PyQt的各类窗口 窗口模态 QDialog QMessageBox


      前面的内容带大家感受认识了PyQt,对于各种组件、布局应该有了自己的理解,今天就阐述组件以及布局的画布----窗口。
      PyQt的窗口可以大致的份三类,也可以理解成两类,即主窗口(QMainWindow),一般窗口(QWidget),还有就是对话窗口(QDialog),当然这是我的叫法和理解。在这里可以把QWidget生成的窗口理解成主窗口,这里就介绍两类窗口。

    一、主窗口(QMainWindow)

      QMainWindow窗口可以包含菜单栏、工具栏、状态栏、标题栏等,是最常见的窗口形式,也就是常说的GUI程序主窗口。

    1、窗口样式

     1、PyQt的基本窗口类型

    • Qt.Widget:默认窗口,有最小化、最大化、关闭按钮。
    • Qt.Window:普通窗口,有最小化、最大化、关闭按钮。
    • Qt.Dialog:对话窗口,有问号和关闭按钮。
    • Qt.Popup:弹出窗口,窗口无边框(无法关闭,请指点)。
    • Qt.ToolTip:提示窗口,窗口无边框,无任务栏。
    • Qt.SplashScreen:闪屏,窗口无边框,无任务栏。
    • Qt.SubWindow:子窗口,窗口无按钮,但有标题。

     2、自定义窗口类型

    • Qt.MSWindowsFixedSizeDialogHint:窗口无法调整大小。
    • Qt.FramelessWindowHint:窗口无边框。
    • Qt.CustomizeWindowHint:有边框但无标题栏和按钮,不能移动和拖动
    • Qt.WindowTitleHint:添加标题栏和一个关闭按钮,但关闭按钮未激活。
    • Qt.WindowSystemMenuHint:添加系统目录和一个关闭按钮,但关闭按钮未激活。
    • Qt.WindowMaximizeButtonHint:激活最大化按钮,禁止最小化和关闭按钮。
    • Qt.WindowMinimizeButtonHint:激活最小化按钮,禁止最大化和关闭按钮。
    • Qt.WindowMinMaxButtonsHint:激活最小化、最大化按钮,相当于
      Qt.WindowMaximizeButtonHint|Qt.WindowMinimizeButtonHint
    • Qt.WindowCloseButtonHint:添加一个关闭按钮。
    • Qt.WindowContextHelpButtonHint:添加问号和一个关闭按钮,但关闭按钮未激活。
    • Qt.WindowStaysOnTopHint:窗口始终处于顶层位置。
    • Qt.WindowStaysOnBottomHint:窗口始终处于底层位置。

    示例代码:

    import sys
    from PyQt5.QtWidgets import (QApplication, QWidget, QToolTip, QPushButton)
    from PyQt5.QtGui import QIcon, QFont
    from PyQt5.QtWidgets import QMessageBox
    from PyQt5.QtWidgets import QDesktopWidget
    from PyQt5.QtCore import Qt
    
    class Example(QWidget):
        
        def __init__(self):
            super().__init__()
            self.initUI()
            
        def initUI(self):
            QToolTip.setFont(QFont('SansSerif', 10))
            self.setToolTip('This is a <b>QWidget</b> widget')
            btn = QPushButton('Button',self) 
            btn.setToolTip('This is a <b>QPushButton</b> widget')
            btn.resize(btn.sizeHint())
            btn.move(50, 50)# 调整按钮位置
            self.setGeometry(400,300,500,500) 
    		self.center()
            self.setWindowTitle("Icon") 
            self.setWindowFlags(Qt.WindowStaysOnBottomHint)
            btn.clicked.connect(lambda:self.close())
            
            
        def closeEvent(self,event):
            reply = QMessageBox.question(self,"message",
                                        "are you sure to quit?",QMessageBox.Yes | QMessageBox.No,
                                         QMessageBox.No)
            if reply == QMessageBox.Yes:
                event.accept()
            else:
                event.ignore()
                
        def center(self):
    
            qr = self.frameGeometry()
            cp = QDesktopWidget().availableGeometry().center()
            qr.moveCenter(cp)
            self.move(qr.topLeft())
                
    
    if __name__ == "__main__":
        app = QApplication(sys.argv)
        ex = Example()
        ex.show()
        app.exec_()
    
    QToolTip.setFont(QFont('SansSerif', 10))
    self.setToolTip('This is a <b>QWidget</b> widget')
    

     设置提示框的字体以及显示样式。

    self.center()
    

     窗口居中,即窗口在屏幕的中间,这里使用的是自定义的方法,具体讲解如下。

    def center(self):
    	qr = self.frameGeometry()# 获得主窗口所在的框架。
    	cp = QDesktopWidget().availableGeometry().center()#获取显示器的分辨率,然后得到屏幕中间点的位置。
    	qr.moveCenter(cp)#然后把主窗口框架的中心点放置到屏幕的中心位置。
    	self.move(qr.topLeft())#然后通过move函数把主窗口的左上角移动到其框架的左上角,这样就把窗口居中了。
                
    
    btn.clicked.connect(lambda:self.close())
    

     给按钮绑定关闭程序代码,主要是测试没有按钮的几个样式时,防止卡死。

    self.setWindowFlags(Qt.WindowStaysOnBottomHint)
    

     设置窗口样式代码,需要先导入Qt模块,导入方法是 from PyQt5.QtCore import Qt。

    2、窗口模态

      这里说的窗口模态和上面讲的窗口样式是不一样的,窗口样式是窗口的展现效果,而这里的模态是指窗口相对于主窗口的模式,所以模态应用于子窗口,具体的模态介绍如下:

    • Qt.NonModal:非模态,可以和程序的其他窗口进行交互。
    • Qt.WindowModal:窗口模态,程序在未处理完当前对话框时,将阻止和对话框的父窗口进行交互。
    • Qt.ApplicationModal:应用程序模态,阻止和任何其他窗口进行交互。

     资料上是上述这个说法,但我实际测试Qt.NonModal和Qt.ApplicationModal都会阻止和主窗口交互,只有Qt.WindowModal可以和主窗口交互,不知是不是我设置的问题,请大佬指点。

    示例如下:

    from PyQt5.QtGui import *
    from PyQt5.QtWidgets import *
    from PyQt5.QtCore import *
    
    class Example(QMainWindow):
        def __init__(self):
            super().__init__()
            self.initUI()
            
        def initUI(self):
            # 放置出现对话框的按钮
            self.btn = QPushButton("会话框",self)
            self.btn.move(50,50)
            self.btn.clicked.connect(self.updateui)
            
            self.setWindowTitle("对话框的使用")
            self.setGeometry(300,300,400,300)
            
        def updateui(self):
            dialog = QDialog()
            btn = QPushButton("OK",dialog)
            btn.clicked.connect(dialog.close)
            btn.move(50,50)
            dialog.setWindowTitle("这是个对话框")
            dialog.setWindowModality(Qt.NonModal)
            
            dialog.exec_()
            
    if __name__ == "__main__":
        app = QApplication([])
        ex = Example()
        ex.show()
        app.exec_()
    
    dialog.setWindowModality(Qt.NonModal)
    

     设置窗口的模态。

    二、对话窗口(QDialog)

      QDialog窗口是对话类窗口,主要就是与用户产生交互,比如我们常用的文件窗口、提示窗口、配置窗口等。

    1、消息窗口 QMessageBox

      QMessageBox是一种通用的弹出式对话框,用于显示消息,允许用户通过单击不同的标准按钮对消息进行反馈。
      QMessageBox类提供了如:提示、警告、错误、问询、关于等对话框(它们的区别在于图标和声音不一样)。

    示例代码:

    from PyQt5.QtCore import *
    from PyQt5.QtGui import *
    from PyQt5.QtWidgets import *
    class MyWindow(QWidget):
        def __init__(self,parent=None):
            super(MyWindow,self).__init__(parent)
            self.setWindowTitle("弹出式对话框例子")
            self.resize(400,200)
            self.btn1=QPushButton(self)
            self.btn1.setText("消息框")
            self.btn1.clicked.connect(self.msg1)
            layout=QVBoxLayout()
    
            self.btn2=QPushButton(self)
            self.btn2.setText("问答对话框")
            self.btn2.clicked.connect(self.msg2)
    
            self.btn3=QPushButton()
            self.btn3.setText("警告对话框")
            self.btn3.clicked.connect(self.msg3)
    
            self.btn4=QPushButton()
            self.btn4.setText("严重错误对话框")
            self.btn4.clicked.connect(self.msg4)
    
            self.btn5=QPushButton()
            self.btn5.setText("关于对话框")
            self.btn5.clicked.connect(self.msg5)
    
            layout.addWidget(self.btn1)
            layout.addWidget(self.btn2)
            layout.addWidget(self.btn3)
            layout.addWidget(self.btn4)
            layout.addWidget(self.btn5)
    
            self.setLayout(layout)
    
        
        def msg1(self):
            #使用infomation信息框
            msg = QMessageBox.information(self,"标题","消息正文",QMessageBox.Yes|QMessageBox.No,QMessageBox.Yes)
        def msg2(self):
             QMessageBox.question(self,"标题","问答消息正文",QMessageBox.Yes|QMessageBox.No,QMessageBox.Yes)
        def msg3(self):
            QMessageBox.warning(self,"标题","警告消息正文",QMessageBox.Yes|QMessageBox.No,QMessageBox.Yes)
        def msg4(self):
            QMessageBox.critical(self,"标题","严重错误消息正文",QMessageBox.Yes|QMessageBox.No,QMessageBox.Yes)
        def msg5(self):
            QMessageBox.about(self,"标题","关于消息正文")
    
    if __name__=="__main__":
        app=QApplication([])
        win=MyWindow()
        win.show()
        app.exec_()
    

    2、输入窗口 QInputDialog

      QImputDialog控件是一个标准对话框,由一个文本框和两个按钮(OK按钮和Cancel按钮)组成。当用户单击OK按钮或按Enter键后,在父窗口可以收集通过QInputDialog 控件输入的信息。QInputDialog控件是QDialog标准对话框的一部分。
      在QInputDialog控件中可以输入数字、字符串或列表中的选项。标签用于提示必要的信息。

    • getInt():从控件获取标准整数输入。
    • getDouble():从控件获取标准浮点数输入。
    • getText():从控件获取标准字符串输入。
    • getItem():从控件获取列表里的选项输入。

    示例代码:

    from PyQt5.QtWidgets import *
    from PyQt5.QtGui import *
    from PyQt5.QtCore import *
    
    class Example(QWidget):
        def __init__(self):
            super().__init__()
            self.initUI()
            
        def initUI(self):
            # 表格布局
            form = QFormLayout()
            self.lb = QLineEdit()
            self.lb.setPlaceholderText('字符串')
            form.addRow("姓名:",self.lb)
            self.lb1 = QLineEdit()
            self.btn = QPushButton("获取数据")
            form.addRow(self.btn,self.lb1)
            self.btn.clicked.connect(self.updateUI)
            self.setLayout(form)
            
            
            self.setWindowTitle("输入框的使用")
            self.setGeometry(300,300,400,300)
            
        def updateUI(self):
            items = ["C","C++","Python","JAVA"]
            item,ok = QInputDialog.getItem(self,"select Input Dialog",
                                          "语言列表",items,0,False)
            if ok and item:
                self.lb1.setText(item)
    
            
    if __name__ == "__main__":
        app = QApplication([])
        ex = Example()
        ex.show()
        app.exec_()
    

    3、字体窗口 QFontDialog

      QFontDialog控件是一个常用的字体选择对话框,可以让用户选择所显示文本的字号大小、样式和格式。QFontDialog是QDialog标准对话框的一部分。使用QFontDialog类的静态方法getFont0,可以从字体选择对话框中选择文本的显示字号大小、样式和格式。

    from PyQt5.QtCore import *
    from PyQt5.QtWidgets import *
    from PyQt5.QtGui import *
    
    class Example(QWidget):
        def __init__(self):
            super().__init__()
            self.initUI()
            
        def initUI(self):
            layout = QVBoxLayout()
            self.btn = QPushButton("选择字体")
            self.font_edit = QLabel()
            self.font_edit.setText("演示文字,请查验!")
            layout.addWidget(self.btn)
            layout.addWidget(self.font_edit)
            self.btn.clicked.connect(self.update)
            self.setLayout(layout)
            
            self.setGeometry(300,300,400,300)
            self.setWindowTitle("字体框的使用")
            
        def update(self):
            font,ok = QFontDialog.getFont()
            if ok:
                self.font_edit.setFont(font)
            
    if __name__ == "__main__":
        app = QApplication([])
        ex = Example()
        ex.show()
        app.exec_()
    

    4、文件窗口 QFileDialog

      QFileDialog是用于打开和保存文件的标准对话框。QFileDialog类继承自QDialog类。
      QFileDialog在打开文件时使用了文件过滤器,用于显示指定扩展名的文件。也可以设置使用QFileDialog打开文件时的起始目录和指定扩展名的文件。

    from PyQt5.QtCore import *
    from PyQt5.QtWidgets import *
    from PyQt5.QtGui import *
    import pandas as pd
    
    class Example(QWidget):
        def __init__(self):
            super().__init__()
            self.initUI()
            
        def initUI(self):
            layout = QVBoxLayout()
            self.btn = QPushButton("选择图片")
            self.btn2 = QPushButton("选择文本文件")
            self.piclb = QLabel()
            self.txt = QTextEdit()
            layout.addWidget(self.btn)
            layout.addWidget(self.piclb)
            layout.addWidget(self.btn2)
            layout.addWidget(self.txt)
            
            self.btn.clicked.connect(self.loadpic)
            self.btn2.clicked.connect(self.loadtxt)
            self.setLayout(layout)
            
            self.setGeometry(300,300,400,300)
            self.setWindowTitle("文件框的使用")
            
        def loadpic(self):
            # 返回一个元组,文件路径在第一个参数,所以用一个占位符
            # 关于参数,第二个是对话框标题,第三个是起始路径,第四个是文件类型,注意是空格隔开,不选是全部文件
            pic,_ = QFileDialog.getOpenFileName(self,"OPen pic",".\\","(*.png *.jpg *.gif)")
            self.piclb.setPixmap(QPixmap(pic))
                
        def loadtxt(self):
            file_path = QFileDialog.getOpenFileName(self,"OPen pic",".\\")
            data = pd.read_excel(file_path[0])
            # self.txt.setText 接受的参数是字符串型,所以要把DataFrame转换
            self.txt.setText(str(data.head(20)))
            
    if __name__ == "__main__":
        app = QApplication([])
        ex = Example()
        ex.show()
        app.exec_()
    
    QFileDialog.getOpenFileName(self,"OPen pic",".\\")
    QFileDialog.getExistingDirectory(self)
    

      第一个是打开并获取文件路径;第二个是打开并获取文件夹路径,后面参数指定具体格式,没有参数则为全部格式。

      PyQt中的Dialog有很多现有的窗口模块,诸如上述几种,当需要的窗口没有时,就需要自己定义自己的需求窗口,就会用到开头讲的窗口的样式和子窗口的模态选择。

    讲解到这里,估计对PyQt的窗口有了一定的理解,持续更新中…

    👊🙈 …

    展开全文
  • MFC 一.简介 MFC中对话框有两种形式,一个是模态对话框(model dialog box),一个是非模态对话框(modeless dialog box...为新创建的窗口添加类,添加完成后,在解决方案下会创建TestDlg.cTestDlg.h两个文件 三.模

    MFC

    一.简介

    MFC中对话框有两种形式,一个是模态对话框(model dialog box),一个是非模态对话框(modeless dialog box)。二者的区别在于当对话框打开时,是否允许用户进行其他对象的操作。这篇我们以在主界面添加一个按键,点击按键后弹出对话框

    在这里插入图片描述

    二.准备

    1. 首先我们在主界面添加一个按键,这个就不多说了
    2. 在资源视图添加第二个界面,命名为IDD_TEST_DIALOG
      在这里插入图片描述
    3. 为新创建的窗口添加类,添加完成后,在解决方案下会创建TestDlg.c和TestDlg.h两个文件
      在这里插入图片描述

    三.模态对话框

    在程序运行的过程中,若出现了模态对话框,那么主窗口将无法发送消息,不能进行操作,直到模态对话框退出才可以发送。点击模态对话框中的OK按钮,模态对话框会被销毁。

    创建模态对话框

    //创建一个模态对话框  
    CTestDlg td;  //CTestDlg 为模态对话框的类名,也就是新添加的界面
    td.DoModal();   
    

    注意:在主程序的头文件(interfaceDlg.h interface为项目名称)中添加模态对话框类的头文件

    #include "TestDlg.h"
    

    可以创建一个布局模态对话框类变量,不用担心它会随着所在函数返回而被销毁。因为DoModal()函数的一个功能是,当前只能运行此模态对话框,且停止主窗口的运行,直到模态对话框退出,才允许主窗口运行。
    DoModal()函数也有显示对话框的功能,所以也无需调用其他函数来显示对话框。

    三.非模态对话框

    在程序运行的过程中,若出现了非模态对话框,主窗口还可以发送消息。

    创建模态对话框
    要建立非模态对话框需要调用两个函数Create()和ShowWindow()。

    • 和上面一样的方法创建
    CTestDlg t;  
    t.Create(IDD_TEST_DIALOG); //创建一个非模态对话框  
    t.ShowWindow(SW_SHOWNORMAL); //显示非模态对话框  
    

    IDD_TEST_DIALOG:要显示界面的ID,在界面属性中查看
    SW_SHOWNORMAL :宏为界面显示

    会发现,运行时我们的界面无法显示,因为声明的对话框变量t是局部变量,但这个函数返回时,t也被析构了,所以无法显示此对话框。

    • 采用局部变量创建一个非模态对话框
     //采用局部变量创建一个非模态对话框  
     CTestDlg *pT = new CTestDlg();  
     pT->Create(IDD_TEST_DIALOG); //创建一个非模态对话框  
     pT->ShowWindow(SW_SHOWNORMAL); //显示非模态对话框  
    
    

    因为指针在声明的时候是被放在堆栈中,只有整个应用程序关闭后才会被销毁,所以可以正常显示对话框。这种方法虽然不影响程序的运行,但是指针pT所指向的内存却导致不可用,

    • 采用成员变量创建一个非模态对话框
      首先在主程序类中声明一个对话框的指针变量
    private:  
     	CTestDlg *pT;  
    

    然后再主界面中双击按键,就会自己添加按键消息的处理函数,在按键函数中添加如下代码

    //采用成员变量创建一个非模态对话框  
     pT = new CTestDlg(); //给指针分配内存  
     pT->Create(IDD_TEST_DIALOG); //创建一个非模态对话框  
     pT->ShowWindow(SW_SHOWNORMAL); //显示非模态对话框  
    

    记住要在所在类的析构函数中收回pT所指向的内存

     delete pT;  
    
    展开全文
  • 转载于:https://www.cnblogs.com/Akkuman/p/8447503.html

    1106918-20180213215856327-1572234637.png

    转载于:https://www.cnblogs.com/Akkuman/p/8447503.html

    展开全文
  • 文章目录一、简单绘图二、设置对话框2.1 设置线宽2.2 设置线型 新建一个单文档类型的MFC工程,取名:Graphic。此程序将实现简单的绘图功能。 一、简单绘图 实现简单的绘图功能,包括点、直线椭圆的绘制。为了实现...
  • 对话框 QDialog

    2022-06-02 09:39:21
    很多不能或者不适合放入主窗口的功能组件都必须放在对话框中设置。对话框通常会是一个顶层窗口,出现在程序最上层,用于实现短期任务或者简洁的用户交互。 Qt 中使用QDialog类实现对话框。就像主窗口一样,我们通常...
  • MFC在很多的对话框操作中,我们经常要用到在一个对话框中调用另一个对话框的函数或变量.可以用如下方法来解决. HWND hWnd=::FindWindow(NULL,_T("Sphere")); //得到对话框的句柄 C***Dialog* pWnd= (C...
  • 引言 QMainWindow 是一个为用户提供主窗口...(本篇主要介绍菜单栏工具栏) ** 一,菜单栏 ** 一个主窗口最多只有一个菜单栏。位于主窗口顶部、主窗口标题栏下面。 创建菜单栏。 QMenuBar* menuBar = new QMenuBar(t
  • 创建非模态对话框就不用说了,主要问题在于这一行: m_testdlg->Create(IDD_DIALOG1,this);...MFC设置对话框窗口位于所有窗口的最顶层 SetWindowPos(&wndTopMost,0,0,0,0,SWP_NOSIZE|SWP_...
  • MFC中有两种类型的对话框: 模态 对话框和非模态 对话框。 模态 对话框是指当其显示时,程序会暂停执行,直到关闭这个 模态 对话框后,才能继续执行程序中其他任务。 (如我们常见的“打开文件”对话框) 非 模态 ...
  • Qt中的窗口和对话框组件

    千次阅读 2016-04-20 23:21:25
    Main Windows and Dialogs主窗口和对话框 Window Geometry窗口几何结构Window and Dialog Widgets(窗口和窗口)注:本篇是对Qt中的窗口(window)窗口(widget)的介绍,原文来自于Qt5.5
  • 1. 实现方法(计算窗口放大/缩小比例,控件相应缩放并改变位置,但会存在一定问题) 先在窗口类的头文件中添加相应变量与函数(其中OnSize由类向导消息WM_SIZE生成): // XXXDlg.h // 窗口放大所需变量 ...
  • 1.对话框和弹出框的处理 2.捕获或者说定位弹出窗口的关键在于获得弹出窗口的句柄。我还是喜欢通过例子来说明:
  • 标准对话框 QMessageBox

    2022-07-26 14:50:05
    所谓标准对话框,是 Qt 内置的一系列对话框,用于简化开发。事实上,有很多对话框都是通用的,比如打开文件、设置颜色、打印设置等。这些对话框在所有程序中几乎相同,因此没有必要在每一个程序中都自己实现这么一个...
  • AWT中提供3个用于在屏幕上显示窗口的构件:Window,Frame,Dialog java.awt . Window是三个窗口构件中最基本的构件,是 Frame与 Dialog 构件的超类。窗口构件没有边界、标题栏与菜单栏,而且其大小不可以调整。如果...
  • 模态对话框(Modal Dialogue Box,又...一般来说,对话框分为模态对话框和非模态对话框两种。二者的区别在于对话框打开时,是否允许用户进行其他对象的操作。在LVGL中该怎么实现这个效果呢?这篇文章给大家分享...
  • 11、对话框

    2021-05-14 10:56:52
    特殊的地方在于,它的窗口过程属于windows,程序员拥有的被称作"对话框过程",windows窗口过程内部会调用对话框过程,把一些消息交给程序员处理。 2、设计对话框 可以在资源管理界面中设计对话框,把各种子...
  • QT_QDialog 对话框

    2022-07-30 22:55:01
    QT多种对话框总结
  • 如单击【确定】或者【取消】按钮等将该对话框关闭,它非模态对话框都是永远置顶的,它们的区别在于对话框打开时, 是否允许用户进行其他对象的操作。 打开模态对话框: window.showModalDia...
  • 主要完善的地方在于: 如:  LineParameterdlg;//新建对话框 ////////////////////////////////////////////////////////// //以下是将上一次设置的对话框参数,先保存到当前的对话框中  dlg.m_colorR=m_Col
  • 参数解释:window.open 弹出新窗口的命令;"page.html” 弹出窗口的文件名;"newwindow” 弹出窗口的名字(不是文件名),非必须,可用空””代替;100 窗口高度;...menubar,scrollbars 表示菜单栏...
  • windows应用程序是通过窗口(window)、控件(control)和对话框(dialog box)来用户交互的,windows系统预定义了很多基本的交互行为外观,也预定义了很多共用的控件和对话框,让应用程序开发者更容易开发出...
  • 对话框是 GUI 程序中不可或缺的组成部分。很多不能或者不适合放入主窗口的功能组件都必须放在对话框中设置。对话框通常会是一个顶层窗口...因此,在可预见的未来,对话框会一直存在于我们的程序中。 Qt 中使用QDi
  • 6、QT基础——对话框QDialog

    千次阅读 2021-04-16 13:27:00
    6.1 基本概念 对话框是 GUI 程序中不...QDialog(及其子类,以及所有Qt::Dialog类型的类)的对于其 parent 指针都有额外的解释:如果 parent 为 NULL,则该对话框会作为一个顶层窗口,否则则作为其父组件的子对话框..
  • 对话框QDialog

    2022-07-25 16:39:24
    对话框QDialog
  • 对话框简介

    2022-07-26 14:48:26
    对话框是 GUI 程序中不可或缺的组成部分。很多不能或者不适合放入主窗口的功能组件都必须放在对话框中设置。对话框通常会是一个顶层窗口,出现在程序最...因此,在可预见的未来,对话框会一直存在于我们的程序中。...
  • QT中 子对话框访问主窗口变量。

    千次阅读 2018-02-01 00:05:34
    //获取父窗口指针 ui->label_ErrorCode->setText(QString::number(p->m_WarnCode)); } DialogWarning::~DialogWarning() { delete ui; } 关键在于 MainWindow * p = (MainWindow*) parent;
  • 模态框非模态框创建都是一样的,关键在于显示方法的不同。 两者的区别如下: 模态对话框(不能对其他窗口进行操作),非模态对话框(可以对其他窗口进行操作) 模态对话框通过exec()方法显示,而非模态对话框通过...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 30,080
精华内容 12,032
热门标签
关键字:

对话框和窗口的不同之处在于