• QT学习笔记二 窗口和子部件


    先说一下继承关系:

    新建一个QT Widgets应用程序时,可供选择的基类有三个:QMainWindow,QWidget和QDialog

    QMainWindow是带有菜单栏和工具栏的窗口类

    QDialog是各种对话框的基类

    QMainwindow和QDialog都继承自QWidget,不仅是这两个类,其他所有窗口部件都最终继承自QWidget

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

    QWidget继承自QObject和QPaintDevice

    QObject是所有支持QT对象模型的基类

    QPaintDevice是所有可以绘制的对象的基类

    写一个窗口和子部件的例子:

    1 创建一个空项目:New Project->其他项目->Empty qmake Project

    2 在.pro文件中加上下面信息

    3 添加一个C++源文件:添加新文件->C++->C++ Source File, 文件名:main.cpp,内容如下:

     1 #include <QtWidgets>
     2 
     3 int main(int argc, char *argv[]){
     4     QApplication a(argc,argv);
     5 
     6     QWidget *w = new QWidget();  // 新建QWidget对象,默认的parent参数是0,表明它是窗口,没有父窗口
     7     w->setWindowTitle(QObject::tr("我是一个窗口,没有父窗口"));  // 设置窗口标题
     8     w->resize(400,300);
     9     // QObject::tr函数可以实现多语言支持,建议程序中所有要显示到界面的文字都使用tr函数扩起来
    10 
    11     QLabel *l1 = new QLabel();  // 新建QLabel对象,默认的parent参数是0,表明它是窗口,没有父窗口
    12     l1->setWindowTitle(QObject::tr("我是一个Label,同时也是一个窗口,因为我没有父窗口"));
    13     l1->setText(QObject::tr("别看我是一个QLabel对象,但我继承自QWidget,所以我也是窗口,别瞧不起我!")); // 设置label内容
    14     l1->resize(600,150); // 设置label大小
    15 
    16     QLabel *l2 = new QLabel(w); // 新建QLabel对象,参数是上面的QWidget对象,所以它不是窗口,子部件,因为有父窗口,
    17     l2->setWindowTitle(QObject::tr("设置label的窗口标题")); // 因为它不是窗口,所以这句话没有作用
    18     l2->setText(QObject::tr("我是一个Label,我有父窗口,所以我是子部件哦!"));
    19     l2->resize(350,150);
    20 
    21     w->show();  // 显示QWidget窗口
    22     l1->show(); // 显示QLabel窗口
    23 
    24     int ret = a.exec();
    25 
    26     delete l1; // 销毁QLabel对象
    27     delete w;  // 销毁QWidget对象
    28     // 因为l2的父窗口w被销毁,其子部件会自动销毁,所以l2不用单独销毁
    29 
    30     return ret;
    31 }

    显示效果如下:

  • 相关阅读:
    使用vs2010编译 Python SIP PyQt4
    谷歌编程指南
    【转】微策略面经相关资料
    KMP 算法
    C++ 拷贝构造函数
    虚继承 虚表 定义一个不能被继承的类
    cache的工作原理
    背包问题
    【转】C/C++ 内存对齐
    【转】 Linux/Unix 进程间通信的各种方式及其比较
  • 原文地址:https://www.cnblogs.com/liyunfei0103/p/9079715.html
Copyright © 2020-2023  润新知