zoukankan      html  css  js  c++  java
  • Qt窗口部件及子部件

    QWidget类是所有用户界面对象的基类,被称为基础窗口部件。

    #include <QApplication>
    #include<QLabel>
    #include<QWidget>
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
    
            // 新建QWidget类对象,默认parent参数是0,所以它是个窗口
            QWidget *widget = new QWidget();
    
            // 设置窗口标题
            widget->setWindowTitle(QObject::tr("我是widget"));
    
            // 新建QLabel对象,默认parent参数是0,所以它是个窗口
            QLabel *label = new QLabel();
    
            label->setWindowTitle(QObject::tr("我是label"));
    
            // 设置要显示的信息
            label->setText(QObject::tr("label:我是个窗口"));
    
            // 改变部件大小,以便能显示出完整的内容
            label->resize(180, 20);
    
            // label2指定了父窗口为widget,所以不是窗口
            QLabel *label2 = new QLabel(widget);
    
            label2->setText(QObject::tr("label2:我不是独立窗口,只是widget的子部件"));
    
            label2->resize(250, 20);
    
            // 在屏幕上显示出来
            label->show();
            widget->show();
    
        return a.exec();
    }
    

     1. Qt中把没有嵌入到其他部件中的部件称为窗口,一般窗口都有边框和标题栏,就像程序中的widget和label一样。窗口就是没有父部件的部件,所有又称为顶级部件.与其相对的是非窗口部件,又称为子部件.

        2.针对于以上这种简单的说法有弊端,如:QDialog为窗口是毋庸置疑的吧,但是在使用对话框时为其指定父窗口也是在正常不过了;

      3.本人所看书上最后还有两句代码delete label; delete widget;,但是添上这两句后运行结果会在后台显示,不会出现在桌面上;   

      4.程序中程序中label没有父窗口,而label2在widget中,widget是其父窗口。程序中使用new为label2分配了空间,但是并没有使用delete进行释放,这是因为在Qt中销毁父对象的时候会自动销毁子对象。

  • 相关阅读:
    INT 3 中断调试处理流程
    调试事件的处理结束
    [IDA] 自动下载符号
    06 内存断点
    05 软件断点
    C#2.0新增功能02 泛型
    C#2.0新增功能01 分部类与分部方法
    xBIM 实战04 在WinForm窗体中实现IFC模型的加载与浏览
    xBIM 实战03 使用WPF技术实现IFC模型的加载与浏览
    xBIM 实战02 在浏览器中加载IFC模型文件并设置特效
  • 原文地址:https://www.cnblogs.com/scf141592/p/4983669.html
Copyright © 2011-2022 走看看