• 第六课、窗口组件及窗口类型------------------狄泰软件学院


    一、窗口组件

    1、组件的介绍

    (1)、图形用户界面由不同类型的窗口和窗口组件构成

    (2)、<QtGui>头文件包含窗口组件,对应Qt中的GUI模块

    (3)、Qt以组件对象的方式构建图形用户界面

    (4)、组件的类型

    A、容器类(父组件):用于包含其它的界面组件(Qt中没有父组件的顶级组件叫做窗口

    B、功能类(子组件):用于实现特定的交互功能

    2、QWidget组件

    (1)、Qwidget类继承自QObjectQPaintDevice

    A、QObject所有支持Qt对象的基类

    B、QPaintDevice是Qt中所有可绘制组件的基类

    (2)、QWidget能够绘制自己和处理用户输入

    (3)、QWidget是Qt中所有窗口组件类的父类(super class)

    (4)、QWidget是所有窗口组件的的抽象

    (5)、Qt的每个窗口组件都是一个QWidget

    (6)、QWidget类对象常作为父组件或顶级组件使用

    3、QLabel组件

    (1)、QLabel用于显示一个提示性的字符串

    (2)、QLabel是功能性组件一般需要父组件作为容器

    (3)、QLabel可以作为窗口存在,但没有什么意义

    //Widget.h

    #ifndef WIDGET_H
    #define WIDGET_H
    
    #include <QtGui/QWidget>
    
    class Widget : public QWidget
    {
        Q_OBJECT
        
    public:
        Widget(QWidget *parent = 0);
        ~Widget();
    };
    
    #endif // WIDGET_H

    //Widget.cpp

    #include "Widget.h"
    
    Widget::Widget(QWidget *parent)
        : QWidget(parent)
    {
    }
    
    Widget::~Widget()
    {
        
    }

    //main.cpp

    #include <QtGui>
    #include "Widget.h"
    
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        QWidget w;//没有父组件,成为窗口
        QLabel l(&w);//父组件为w
    
        w.setWindowTitle("D.T.Software");
        l.setText("I'm a label");
        w.show();
    
        /*说明label也可以成为一个窗口(因为继承自QWidget),但没什么意义
        QLabel l;
        l.setWindowTitle("D.T.Software");
        l.setText("I'm a label");
        l.show();
        */
        return a.exec();
    }

    二、窗口的类型(关键字Qt::WindowType可以查到窗口的类型和样式):在构造函数的第二个参数处设置。第一个参数为父类

    1、Qt中可以根据需要定制窗口样式

    (1)、窗口类型:

    A、Qt::Dialog : 对话框类型

    B、Qt::Window : 主窗口类型

     

    C、Qt::SplashScreen : 启动画面类型(可以用来做欢迎界面)

     (2)、窗口标志

    A、Qt::WindowStaysOnTopHint(始终在顶层)

    B、Qt::WindowContexHelpButtonHint(最大最小化按钮变成了帮助按钮)

    #include <QtGui>
    #include "Widget.h"
    
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        QWidget w(0,Qt::Window|Qt::WindowStaysOnTopHint);//没有父组件,成为窗口
        QLabel l(&w);//父组件为w
    
        w.setWindowTitle("D.T.Software");
        l.setText("I'm a label");
        w.show();
    
        /*说明label也可以成为一个窗口(因为继承自QWidget),但没什么意义
        QLabel l;
        l.setWindowTitle("D.T.Software");
        l.setText("I'm a label");
        l.show();
        */
        return a.exec();
    }

    三、小结

    (1)、Qt以组件对象的方式构建图形用户界面

    (2)、QWidget是Qt中所有窗口组件类的父类(super class)

    (3)、QWidget类对象常作为父组件顶级组件使用

    (4)、Qt中可以根据需要定制窗口样式

    (5)、QLabel用于显示一个提示性的字符串

  • 相关阅读:
    揉碎HTTP编码过程,从此不乱码
    Eclipse与IDEA配置tomcat
    JavaWEB入门
    网络编程-socket
    Java
    Mysql存储过程 —— SEQUENCE的实现
    Java Servlet 2.5 设置 cookie httponly
    CountDownLatch和CyclicBarrier 区别
    ply python 图片压缩 图片裁剪 旋转
    各种正则大杂烩,正则手机,正则邮箱
  • 原文地址:https://www.cnblogs.com/gui-lin/p/6386773.html
Copyright © 2020-2023  润新知