Contents
  1. 1. 窗口、子部件、窗口类型
    1. 1.1. qDebug()

神奇女侠

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

窗口、子部件、窗口类型

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

实例:窗口与子部件:
myWidget1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
//#include <QtGui>
#include <QtWidgets>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
//新建QWidget类对象,默认parent参数是0,所以它是一个窗口
// QWidget * widget=new QWidget();//mark
/*类型1:Dialog 对话框类型*/
QWidget *widget=new QWidget(0,Qt::Dialog);//与上一行代码效果一样
/*窗口标志1: FramelessWindowHint用来产生一个没有边框的窗口*/
// QWidget *widget=new QWidget(0,Qt::Dialog|Qt::FramelessWindowHint);
/* 窗口标志2:WindowStaysOnTopHint用来停留在所有其他窗口上*/
// QWidget *widget=new QWidget(0,Qt::Dialog|Qt::WindowStaysOnTopHint);
/*设置标题*/
widget->setWindowTitle(QObject::tr("I'm a label"));
// label2指定了父窗口为widget,所以不是窗口.
QLabel *label2 = new QLabel(widget);
label2->setText(QObject::tr("label2:i'm not depart windows,i'm just widget part"));
label2->resize(250,100);//改变窗口大小;void resize(int w, int h)
/******************************************************************************************/
/* 新建QLabel对象,默认parent参数是0,所以它是个窗口*/
QLabel *label = new QLabel();
/*类型2:SplanshScreen 欢迎窗口类型*/
// QLabel * label=new QLabel(0,Qt::SplashScreen);
// 设置窗口标题
label->setWindowTitle(QObject::tr("I'm a Windows!"));
// 设置要显示的信息
label->setText(QObject::tr("show what your want!"));
label->resize(250,100);
/******************************************************************************************/

// 在屏幕上显示出来
widget->show(); //代码中有多少个widget就要show多少个
label->show();
/******************************************************************************************/
int ret = a.exec();
/*
* 这里使用new操作符为label2分配了空间,但是并没有使用delete进行释放,
* 这是因为QT在销毁父对象的时候也会自动销毁自独享
*/
delete label;
delete widget;
return ret;
}

运行结果
运行结果: http://7xsic8.com1.z0.glb.clouddn.com/myWidget.png

  • 窗口部件Widget
    窗口部件(Widget)是Qt中建立用户界面的主要元素。像窗口、对话框、标签、按钮、文本输入框等都是窗口部件。

  • 窗口

窗口就是没有父部件的部件,所以又称为顶级部件(top-level widget)。

与其相对的是非窗口部件,即子部件(child widget)

Qt中大部分不仅用作子部件嵌入在别的窗口中,例如程序中的label2

  • QWidget

提供了绘制自己和处理用户输入事件的基本功能,Qt提供的所有界面元素不是QWidget的子类就是与QWidget的子类相关联。

要设计自己的窗口部件,可以继承自QWidget或者它的子类等。

QWidget的构造函数没有2个参数:

1
QWidget * parent=0      // parent就是指父窗口部件,默认值为0,表明没有父窗口。

1
Qt::WindowFlags f=0     // f参数是Qt::WindowFlags类型,是一个枚举类型,分为窗口类型WindowType和窗口标志WindowFlags  ?????

qDebug()

qDebug()函数输出方法:

  • 直接将字符串当作参数传给qDebug()函数,
  • 另一种:使用输出流的方式一次输出多个值

    这种方法必须添加头文件#include<QDbug>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <QtWidgets>
#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的值; 直接将字符串当作参数传给qDebug()函数,
int y=widget.y();
qDebug("y: %d ",y);
QRect geometry=widget.geometry();
QRect frame=widget.frameGeometry();
qDebug()<<"geometry:"<<geometry<<"frame:"<<frame; //使用输出流的方式一次输出多个值

qDebug()<<"post:"<<widget.pos()<<endl<<"rect:"<<widget.rect()<<
endl<<"size:"<<widget.size()<<endl<<"with:"<<widget.width()<<endl<<"height:"
<<widget.height();
return a.exec();
}

运行结果

Contents
  1. 1. 窗口、子部件、窗口类型
    1. 1.1. qDebug()