博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
QT Creator 快速入门教程 读书笔记(二)
阅读量:5285 次
发布时间:2019-06-14

本文共 2165 字,大约阅读时间需要 7 分钟。

一 窗口部件

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

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

以上demo的代码:

#include "dialog.h"#include 
#include
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 
#include
#include
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 的位置弹出两个窗口,如下图所示:

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

 

转载于:https://www.cnblogs.com/ChinacloudTech/p/6602234.html

你可能感兴趣的文章
树上的路径
查看>>
问题总结
查看>>
软件随笔
查看>>
Linux下SVN自动更新web [转]
查看>>
Openstack api 学习文档 & restclient使用文档
查看>>
poj100纪念
查看>>
NetWork——关于TCP协议的三次握手和四次挥手
查看>>
An easy problem
查看>>
MauiMETA工具的使用(一)
查看>>
LeetCode: Anagrams 解题报告
查看>>
Qt 中获取本机IP地址
查看>>
070102_赌博设计:概率的基本概念,古典概型
查看>>
IT人生的价值和意义 感觉真的有了
查看>>
JS DOM对象
查看>>
OGR – Merging Multiple SHP files
查看>>
创业公司该不该被收购?(转)
查看>>
sqlserver 行转列、列转行[转]
查看>>
【IScroll深入学习】解决IScroll疑难杂症
查看>>
python 数据类型
查看>>
108-PHP类成员protected和private成员属性不能被查看数值
查看>>