zoukankan      html  css  js  c++  java
  • QT Creator 快速入门教程 读书笔记(二)

    一 窗口部件

    基础窗口部件QWidget类是所有用户界面对象的基类,窗口和控件都是直接或间接继承自 QWidget,下面我们来看一个很简单的例子:

    窗口部件(Widget)简称部件,是QT中建立界面的主要元素,QT中把没有嵌入到其他部件部件成为窗口,一般的窗口都有边框,标题栏,窗口是指程序的整体界面,可以包含标题栏、菜单栏、工具栏、关闭按钮、最小化按钮、最大化按钮等;控件是指按钮、复选框、文本框、表格、进度条等这些组成程序的基本元素。一个程序可以有多个窗口,一个窗口也可以有多个控件。(但其实控件有时候就是窗口)

    以上demo的代码:

    #include "dialog.h"
    #include <QApplication>
    #include <QtWidgets>
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
    
        QWidget *widget=new QWidget();
        //新建QWidget类对象,默认parent是0,所以它是个窗口。
        widget->setWindowTitle(QObject::tr("我是widget"));
        QLabel *label=new QLabel();
        label->setWindowTitle(QObject::tr("我是label"));
    
        label->setText(QObject::tr("label:我是个窗口"));
        label->resize(180,20);
        //指定了父窗口为widget,所以不是窗口
        QLabel *label2=new QLabel(widget);
        label2->setText(QObject::tr("label2:我不是独立窗口,只是widget的子部件"));
    
        label2->resize(250,20);
        label->show();
        widget->show();
        int ret =a.exec();
        delete label;
        delete widget;
        return ret;
    }
    

     二 窗口类型

    QWidget的构造函数中有两个参数:QWidget* parent=0 和 Qt::WidowFlags f=0,前面的parent指的是父窗口部件,默认为哦,表明没有父窗口,而后面的f参数是Qt::WindowFlags类型,是Qt::WindowType枚举类型值或者组合。0表示Qt::Widget,默认的类型。

    QMainWindow、QWidget、QDialog 三个类就是用来创建窗口的,可以直接使用也可以继承后再使用。

    QMainWindow 窗口可以包含菜单栏、工具栏、状态栏、标题栏等,是最常见的窗口形式,可以作为GUI程序的主窗口。如下图所示:



    QDialog 是对话框窗口的基类。对话框主要用来执行短期任务,或与用户进行互动,它可以是模态的也可以是非模态的。QDialog 没有菜单栏、工具栏、状态栏等,如下所示:


    如果是主窗口,就使用 QMainWindow;如果是对话框,就是用 QDialog;如果不确定,或有可能作为顶级窗口,也有可能嵌入到其他窗口中,那么使用 QWidget。

    需要注意的是,窗口和控件都继承自 QWidget,如果不为控件指定父对象,它就会被作为窗口处理,这时 setWindowTitle() 和 setWindowIcon() 函数就会生效。请看下面的代码:

    #include <QApplication>
    #include <QLabel>
    #include <QPushButton>
    
    int main(int argc, char *argv[])
    {
        QApplication app(argc, argv);
    
        QLabel label("这是Label控件");  //没有父对象
        label.setWindowTitle("Label控件作为顶级窗口");
        label.setGeometry(100, 50, 360, 160);
        label.setAlignment(Qt::AlignCenter);
        label.show();
    
        QPushButton btn;  //没有父对象
        btn.setWindowTitle("PushButton控件作为顶级窗口");
        btn.setText("这是个大大的按钮");
        btn.setGeometry(480, 50, 360, 160);
        btn.show();
    
        return app.exec();
    }
    

    运行代码,会在距离显示器 x=100, y=50 的位置弹出两个窗口,如下图所示:


    可以发现,窗口和控件没有绝对的区别,控件也可以成为窗口,这取决于它有没有父对象。

    感谢您的阅读,若有不足之处,欢迎指教,共同学习、共同进步。 博主网址:http://www.cnblogs.com/ChinacloudTech/ 独立博客:http://futuretechx.com 如您喜欢,麻烦推荐一下;如您有新想法,欢迎提出,邮箱:1145356699@qq.com。 本博客为博主原创,欢迎转载,但必须注明博客来源。 更多关于游戏开发的内容也可关注微信公众号:微浪游戏
  • 相关阅读:
    python一些简单操作
    MySQL事务
    c#替换word中的文本并导出(示例)
    SQLServer将某个字段的多行记录合并返回一行
    SQL根据某字段查询不重复记录
    SQLServer逗号分割字符串返回多行
    c# js日期工具
    onchange,onfocus ,oninput事件
    compositionstart事件与compositionend事件
    图片处理问题
  • 原文地址:https://www.cnblogs.com/ChinacloudTech/p/6602234.html
Copyright © 2011-2022 走看看