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 Creator 中,如果你想要重置窗口并将所有内容清空,你可以采取以下步骤: 1. 清空界面组件:如果你使用的是 Qt Designer 设计的界面,你可以在 Qt Designer 中选择界面上的所有组件,然后直接删除它们,或者通过点击界面布局的空白区域来取消选择所有组件。 2. 清空代码:在你的主窗口类的代码中,你可能创建了一些对象,比如 QPushButtons、QLabels 等。你可以在代码中找到这些对象的创建语句,然后删除或者注释掉它们的声明和初始化代码。 3. 清空槽函数:如果你的窗口类中有连接到界面组件的槽函数,你可以在槽函数中清除所有处理逻辑。 如果你想要通过代码在运行时重置窗口,你可以编写一个函数来清除所有窗口中的组件。以下是一个简单的示例代码,展示了如何在运行时清空一个 Qt 窗口中的所有小部件: ```cpp void MainWindow::clearWindowContents() { // 假设你有一个 QWidget 类型的指针指向窗口的内容区域 QWidget *contentWidget = this->centralWidget(); // 清除所有子部件 foreach (QObject *obj, contentWidget->children()) { if (QWidget *widget = qobject_cast<QWidget*>(obj)) { widget->deleteLater(); // 使用 deleteLater 避免在遍历时直接删除对象 } } // 重新初始化窗口的内容 // 例如,你可以在这里重新添加组件到 contentWidget } ``` 请注意,删除窗口中的所有小部件并不会改变窗口的尺寸和位置。如果窗口的尺寸需要根据内容动态调整,你可能需要重新计算窗口的大小,并调用 `resize()` 或 `adjustSize()` 方法来更新窗口尺寸。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值