Qt Creator 窗口部件

1、基础窗口部件 QWidget

QWidget 类是所有用户界面对象的基类,被称为基础窗口部件。QWidget 继承自 QObject 类和 QPaintDevice 类,其中QObject类是所有支持Qt 对象模型的基类,QPaintDevice 类是所有可以绘制的对象的基类。

1.1 窗口、子部件和窗口类型

窗口部件(Widget),是 Qt 中建立用户界面的主要元素。像主窗口 、 对话框、标签 、按钮、文本输入框等都是窗口部件。 这些部件可以接收用户输入 ,显示数据和状态信息,并且在屏幕上绘制自己。Qt 中把没有嵌入到其他部件中的部件称为窗口,一般窗口都有边框和标题栏 ,就像程序中的 widget 和 label 一样。窗口就是没有父部件的部件,与其相对的是非窗口部件,又称为子部件。 在 Qt 中大部 分部件用作子部件, 嵌入在别的窗口中。QWidget 提供了绘制自己和处理用户输入事件的基本功能,Qt 提供的所有界面元 素不是QWidget 的子类就是与 QWidget 的子类相关联。 要设计自己的窗口部件 ,可以继承自 QWidget 或者是它的子类等。
Widget 的构造函数有两个参数 : “QWidget * parent = 0” 和 “Qt:Wi ndowFlags f = 0”,前面的 parent 就是指父窗口部件 ,默认值为0,表明没有父窗口;而后面的 f 参数是 Qt: : WindowFlags 类型的 ,是 个枚举类型,分为窗口类型 (WindowType) 和窗口标志(WindowFlags) 。 前一 者可以定义窗口的类型, 比如 f = 0 表明使用了 Qt::Widget ,这是 QWidget 的默认类型 ,这种类型的部件如果有父窗口,那么它就是子部件 , 否则就是独立的窗口 。

2 程序调试

1、设置断点

#include "mainwindow.h"
#include <QtGui>
# include <QApplication>
# include <QWidget>
int main(int argc, char * argv[])
{
QApplication a(argc, argv);
QWidget widget;
int x = widget. x();
int y = widget. y() ;
QRect geometry= widget. geometry();
QRect frame = widget.frameGeometry();
return a.exec() ;
}

在"int x= widget. x();"一行代码的标号前面单击来设置断点。 只要在那个断点上再单击一下就可以取消断点了。 设置好断点后便可以按下左下角的调试按钮开始调试。 这时程序先进行构建再进入调试模式,这个过程可能需要一些时间 。

2、使用 qDebog() 函数

程序调试过程中很常用的是qDebug()函数,它可以将调试信息直接输出到控制台。

#include "mainwindow.h"
# include <QApplication>
# include <QWidget>
# include <QDebug>
int main(int argc, char * argv[])
{
QApplication a(argc, argv);
QWidget widget;
widget.resize(400, 300); //设置窗口大小
widget.move(200, 100); //设置窗口位置
widget.show();
int x = widget.x();
qDebug("x, %d", x); //输出x的值
int y= widget.y() ;
qDebug("y, %d",y);
QRect geometry= widget.geometry();
QRect frame = widget.frameGeometry();
qDebug() << "geometry, " << geometry << "frame, " << frame;
return a.exec();
}

要使用 qDebug() 函数,就要添加 #include < QDebug >头文件。 有两种输出方法, 一种是直接将字符串当作参数传给qDebug() 函数,一种方法是使用输出流的方式一次输出多个值,它们的类型可以输出 x 和 y 的值。
如果只使用第二种方法,那么是不需要添加< QDebug>头文件的;而第二种方法就必须添加这个头文件。 第一种方法很麻烦,所以经常使用的是第二种方法。

上一篇:QT基础学习(10)---简单的绘图


下一篇:Qt画中局部放大(内部显示)