1. 简介
QWidget类:
QWidget
类是所有用户界面对象的基类。它从窗口系统接收鼠标,键盘和其他事件,并将其自身绘制在屏幕上。
pro文件
QT+= widgets
头文件
#include <QWidget>
同时继承:QObject
类 和 QPaintDevice
类
-
QWidget
:类是所有用户界面对象的基类。 -
QObject
:是所有Qt
类的基类。提供了信号-槽的机制。 -
QPaintDevice
:可以使用QPainter
绘制的对象的基类。
2. 构造函数
QWidget::QWidget(
QWidget *parent = Q_NULLPTR,
Qt::WindowFlags f = Qt::WindowFlags()
);
参数:
parent
:如果是 nullptr
,则小部件将成为一个主窗口,否则小部件将成为 parent
内的子窗口删除其父窗口时,将删除他的小部件。
f
:由任何窗口标志的按位“或”组成的值。Qt::Window Flags()
就是构造了一个模板类对象默认是Qt::Widget
enum WindowType {
Widget = 0x00000000,
Window = 0x00000001,
Dialog = 0x00000002 | Window,
Sheet = 0x00000004 | Window,
Drawer = Sheet | Dialog,
Popup = 0x00000008 | Window,
Tool = Popup | Dialog,
ToolTip = Popup | Sheet,
SplashScreen = ToolTip | Dialog,
Desktop = 0x00000010 | Window,
SubWindow = 0x00000012,
ForeignWindow = 0x00000020 | Window,
CoverWindow = 0x00000040 | Window,
WindowType_Mask = 0x000000ff,
MSWindowsFixedSizeDialogHint = 0x00000100,
MSWindowsOwnDC = 0x00000200,
BypassWindowManagerHint = 0x00000400,
X11BypassWindowManagerHint = BypassWindowManagerHint,
FramelessWindowHint = 0x00000800,
WindowTitleHint = 0x00001000,
WindowSystemMenuHint = 0x00002000,
WindowMinimizeButtonHint = 0x00004000,
WindowMaximizeButtonHint = 0x00008000,
WindowMinMaxButtonsHint = WindowMinimizeButtonHint | WindowMaximizeButtonHint,
WindowContextHelpButtonHint = 0x00010000,
WindowShadeButtonHint = 0x00020000,
WindowStaysOnTopHint = 0x00040000,
WindowTransparentForInput = 0x00080000,
WindowOverridesSystemGestures = 0x00100000,
WindowDoesNotAcceptFocus = 0x00200000,
MaximizeUsingFullscreenGeometryHint = 0x00400000,
CustomizeWindowHint = 0x02000000,
WindowStaysOnBottomHint = 0x04000000,
WindowCloseButtonHint = 0x08000000,
MacWindowToolBarButtonHint = 0x10000000,
BypassGraphicsProxyWidget = 0x20000000,
NoDropShadowWindowHint = 0x40000000,
WindowFullscreenButtonHint = 0x80000000
};
3. 成员函数
成员函数 | 用法 |
---|---|
setToolTip | 为 widget 设置提示 |
setWindowlcon | 设置窗口图标 |
setwindowState | 设置窗口状态 |
setWindowOpacity | 设置窗口透明度 |
setWindowTitle | 设置窗口标题 |
setEnabled | 是否禁用窗口 |
show | 显示窗口 |
hide | 隐藏窗口 |
close | 关闭窗口 |
frameGeometry | 获取相对父窗口的整个窗口矩形,包括边框 |
frameSize | 获取整个窗口长宽,包括边框 |
pos | 获取相对父窗口的整个窗口的左上角坐标 |
x | 获取相对父窗口的整个窗口的左上角x坐标 |
y | 获取相对父窗口的整个窗口的左上角y坐标 |
geometry | 获取相对父窗口的客户区矩形,不包括边框 |
setGeometry | 设置相对父窗口的客户区矩形,不包括边框 |
size | 客户区的长宽,不包括边框 |
resize | 修改客户区的长宽,不包含边框 |
width | 客户区的长,不包括边框 |
height | 客户区的宽,不包括边框 |
rect | 相当于(0,0,width(),height()) |
setFixedSize | 设置客户区固定长宽,并且窗口大小无法拉升 |
4. 示例代码
#include <QApplication>
#include <QWidget>
#include <QDebug>
int main(int argc, char *argv[])
{
//基于Widget的GUI程序需要使用QApplication的实例
QApplication a(argc, argv);
QWidget w;
//设置窗口标题
w.setWindowTitle("窗口");
//设置窗口透明度范围0-1
w.setWindowOpacity(1);
//设置窗口提示
w.setToolTip("这是提示");
//设置Widget背景色
QPalette pal=w.palette();
pal.setColor(QPalette::Background, Qt::red);
w.setPalette(pal);
//设置 固定大小,无法调整
w.setFixedSize(300,300);
//显示窗口
w.show();
//设置客户区域的矩形
//w.setGeometry(0,0,300,300);
//仅设置客户区的长宽
//w.resize(300,300);
{//获取整个窗口的一些尺寸
qDebug()<<"整个窗口矩形"<< w.frameGeometry()<<endl;
qDebug()<<"整个窗口长宽"<< w.frameSize()<<endl;
qDebug()<<"整个窗口左上坐标"<< w.pos()<<w.x()<<w.y()<<endl;
}
{//获取客户区的一些尺寸
qDebug()<<"客户区的矩形"<< w.geometry()<<endl;
qDebug()<<"客户区的矩形,以0,0为左上角"<< w.rect()<<endl;
qDebug()<<"客户区的长宽"<< w.size()<< w.width()<<w.height() << endl;
qDebug()<<"客户左上坐标"<< w.geometry().x()<< w.geometry().y() <<endl;
}
return a.exec();
}
执行结果: