窗口部件及窗口类型

窗口部件和窗口类型并不是Qt中才有的概念,其他的平台中也有类似的概念。

图形用户界面由不同的窗口和窗口组件构成(也就是说窗口和窗口组件是图形用户界面开发中的最小单元)<QtGui>头文件包含窗口组件,对应Qt中的GUI模块Qt以组件对象的方式构建图形用户界面

组件的类型:——容器类(父组件):用于包含其它的界面组件——功能类(子组件):用于实现特定的交互功能

Qt中没有父组件的顶级组件叫做窗口

QWidget类继承自QObject类和QPaintDevice类——QObject是所有支持Qt对象模型的基类——QPaintDevice是Qt中所有可绘制组件的基类

QWidget组件QWidget能够绘制自己和处理用户的输入QWidget是Qt中所有窗口组件类的父类(super class)QWidget是所有窗口组件的抽象Qt中的每个窗口组件都是一个QWidgetQWidget类对象常作为父组件或顶级组件使用

QWidget编程初探

#include "Widget.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;  //w没有父组件,因此它就是一个窗口
    w.show();

    return a.exec();
}

Widget w; w没有父组件,因此它就成为了窗口。所看到的名为Test这个对话框是由Qt自动生成的,Qt在QWidget的外面加上了对话框一些特有的东西,比方说标题、最大化和最小化、关闭按钮。真正的widget是对话框里面那块,它什么也没有,因为QWidget是所有图形用户组件类的父类。

QLabel组件QLabel用于显示一个提示性的字符串QLabel是功能性组件,一般需要父组件作为容器QLabel可以作为窗口存在,但没有意义

QWidget w; //生成QWidget对象,顶级组件
QLabel l(&w); //生成QLabel对象,其父组件为QWidget

/*设置QLabel组件的显示字符串*/
l.setText("This is a Label control.");

QLabel组件的使用

#include "Widget.h"
#include <QApplication>
#include <QLabel>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;  //w没有父组件,因此它就是一个窗口
    QLabel l(&w);

    l.setText("I am a label control...");

    w.setWindowTitle("QingDao");
    w.show();

    return a.exec();
}

 再来做一件没有意义的事,让QLable没有父组件,使其独立存在,独立存在意味着它将成为顶级组件,也就是说它将拥有一个包含自己的窗口。

#include "Widget.h"
#include <QApplication>
#include <QLabel>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QLabel l;

    l.setText("I am a label control...");
    l.show();

    return a.exec();
}

窗口类型Qt中可以根据需要定制窗口式样——窗口类型Qt::Dialog——对话框类型Qt::Window——主窗口类型Qt::SplashScreen——启动画面类型......——窗口标志Qt::WindowStaysOnTopHint:将这个窗口作为顶级窗口,意味着它不会被其他的窗口遮挡。Qt::WindowContextHelpButtonHint....

实验1Qt::Dialog

#include "Widget.h"
#include <QApplication>
#include <QLabel>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QWidget w(NULL,Qt::Dialog);
    QLabel l(&w);

    l.setText("I am a label...");

    w.setWindowTitle("QingDao...");

    w.show();

    return a.exec();
}

 可以看到最大化与最小化按钮没有了。

实验2:Qt::window

#include "Widget.h"
#include <QApplication>
#include <QLabel>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QWidget w(NULL,Qt::Window);
    QLabel l(&w);

    l.setText("I am a label...");

    w.setWindowTitle("QingDao...");

    w.show();

    return a.exec();
}

 存在最大化,最小化以及关闭按钮

实验3 Qt::SplashScreen

#include "Widget.h"
#include <QApplication>
#include <QLabel>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QWidget w(NULL,Qt::SplashScreen);
    QLabel l(&w);

    l.setText("I am a label...");

    w.setWindowTitle("QingDao...");
    w.resize(400,300);
    w.show();

    return a.exec();
}

 乍一看没有什么用,但是我们可以在空白区域放上一张好看的图片,让其作为启动页面,例如一些欢迎界面等等。

实验4:Qt::WindowStaysOnTopHint

#include "Widget.h"
#include <QApplication>
#include <QLabel>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QWidget w(NULL,Qt::Window|Qt::WindowStaysOnTopHint);
    QLabel l(&w);

    l.setText("I am a label...");

    w.setWindowTitle("QingDao...");
    w.resize(400,300);
    w.show();

    return a.exec();
}

 生成的这个窗口始终处于最上面。

实验5:Qt::WindowContextHelpButtonHint

#include "Widget.h"
#include <QApplication>
#include <QLabel>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QWidget w(NULL,Qt::Window|Qt::WindowStaysOnTopHint|Qt::WindowContextHelpButtonHint);
    QLabel l(&w);

    l.setText("I am a label...");

    w.setWindowTitle("QingDao...");
    w.resize(400,300);
    w.show();

    return a.exec();
}

 将最大化,最小化按钮替换成了帮助按钮,并且关闭按钮变成了灰色,不能选择了。

其他的标志,可以查阅Qt的帮助文档

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值