• 【Qt】2.3 使用Qt设计师来创建对话框


    安装完Qt OpenSource之后,在开始菜单目录下会有这几个东西。

    其中【Designer】是用来设计窗口界面的程序。所以现在可以使用它来设计一个对话框。在【Qt Creator】中,【设计】这一项里也可以做界面的设计。

    打开【Designer】,会默认弹出【新建窗体】,选择【Dialog without Buttons】,这会新建出一个没有任何东西的对话框。

    【Dialog with Buttons Bottom】和【Dialog with Buttons Right】会创建出包含【确定】和【取消】的两个按钮的对话框,而且这2个按钮的位置会在对话框的右下角或者对话框的右上角。

    当点击创建之后,就可以对这个对话框做界面的设计了。

    对于用过Visual Studio或者其它编程工具的大家来说,这个设计界面也算是比较熟悉的吧,最左边一栏是最常用的工具栏。

     

    我将对话框做成这样子:

    可以修改每个部件和这个对话框的名字,在【对象查看器】中选择【Dialog】。

    在【属性编辑器】查看对话框的属性,把对象名称改成自己想要的名字。同理,【label】、【pushButton】、【pushButton_2】也一样可以这样做修改。

    最后我改成这样子:

    然后保存,这个文件是一个.ui格式的文件。

     

    打开【Qt Creator】,新建一个项目。

    因为这只是一个比较简单的创建对话框,创建完成这个项目之后,我把它自己创建的【mainwindow.h】【mainwindow.cpp】、【mainwindow.ui】这三个文件都删除了,因为在这个测试里不需要它们。

    右键【项目名称】,点击【添加新文件】,选择【C++ Class】,写上类名,然后就完成创建。我创建的类叫【MyDialog】。

    要使用我们刚刚所设计的那个对话框,我们需要把那个.ui文件添加到项目里。右键【项目名称】,点击【添加现有文件】,选择对话框的那个.ui文件,确定。

    在【mydialog.h】中,代码如下:

    第5、7行:【mydialog.ui】文件对应的头文件就叫【ui_mydialog.h】,这是一定的。这个头文件保存了我们所设计的【MyDialog】这个对话框的所有定义。我们定义的【MyDialog】类需要继承自【QDialog】和【Ui::MyDialog】这两个类。

    构建这个项目之后,你就可以进入到【ui_mydialog.h】这个头文件里面去了。你会发现,这个文件里的【MyDialog】这个类继承自【Ui_MyDialog】,【MyDialog】类存在于命名空间【Ui】下,所以要使用这个类,需要这样做:Ui::MyDialog。

    第15行:这是一个很方便的写法,到了源文件时再说明这个写法有什么用处。

     

    其它行应该就不需要再说明了,现在看源文件代码:

    第6行:这里调用了一个叫做【setupUi】的函数,把this指针作为参数。

    这个函数是在【Ui::MyDialog】类中的一个公有函数。它用来初始化对话框的各个部件和我们设置过的属性。它其实就相当于我们自己初始化部件一样。

    同时【setupUi】函数还会自动将那些符合【on_object_signal】命名格式的槽与相应的【object】的【signal()】信号连接起来。

    这意味着【on_helloButton_clicked】槽将会在【setupUi】函数中建立一个连接:

    所以这省了我们自己去调用【connect】函数来建立连接这一步骤。

     

    关于【setupUi】函数所传入的this指针参数。

    【Ui::MyDialog】类并不是一个继承自【QDialog】的类,它只保存了我们在【Qt 设计师】中放置的所有部件。

    然后在【setupUi】函数中实例化这些部件,同时设置我们在【Qt 设计师】中所设置的属性。

    【setupUi】函数所需要的参数是QDialog *类型,在函数实例化部件时,会将这些部件的父对象指定成这个参数,也就是说这些部件从实例化开始,他们就已经属于这个参数所在的对话框中了。也说明了【setupUi】函数传递this指针的原因。

    它等于是自动地把我们在【Qt 设计师】中放置的所有部件和其属性全部"搬到了"我们自己写的【MyDialog】类中。

     

    其它的代码之前都是有说过的,所以应该很好理解~!

    最后在main函数中创建【MyDialog】实例后,就可以显示出来了。

    结果就是这样子:

     

    另外,在【Qt 设计师】中对部件进行布局。

    这是用来做布局的工具栏。

    第1个:水平布局,相当于QHBoxLayout。

    第2个:垂直布局,相当于QVBoxLayout。

    第3个:使用水平分隔器布局,相当于创建一个水平的QSplitter对象。

    第4个:使用垂直分隔器布局,相当于创建一个垂直的QSplitter对象。

    第5个:栅格布局,相当于QGridLayout。

    第6个:在窗体布局中布局,相当于QFormLayout。

    第7个:打破布局。

    第8个:调整大小。

     

    算是比较简单,所以可以自己多多尝试这些布局方法。

    关于QSplitter类,它用于切分窗口,并且可以任意调节各个子窗口的大小。

    可以写以下代码:

    然后试着运行看看,你就会知道它是什么功能了。

    用到的函数QSplitter::QSplitter ( Qt::Orientation orientation, QWidget * parent = 0 )

    函数的说明:构造一个分隔器。orientation参数有:Qt:: Horizontal和Qt:: Vertical,表示分隔器的方向。

     

     

     

     

    经过了3个月左右的学习,已经把《C++ GUI Qt 4》这本书学完了。最近都在自己做着练习,快毕业啦,会忙得多。所以更新会比较慢。不过当然可以保证的是每月至少二篇~要坚持写博。

    其实是没什么信心来写Qt呢,因为比较怕自己对这些知识的理解有错误,如果有错,还请大家多指出来,谢谢~

  • 相关阅读:
    MySQL命令2
    MySQL命令1
    前端之HTML1
    linux命令之df dh
    python call java jar
    redis-py中的坑
    YARN应用程序的开发步骤
    Yarn的服务库和事件库使用方法
    SSH无密码验证
    在centos 6.5 在virtual box 上 安装增强版工具
  • 原文地址:https://www.cnblogs.com/recordprogram/p/5927705.html
Copyright © 2020-2023  润新知