qt5--QWidget
窗口标志
setWindowFlag(Qt::WindowStaysOnTopHint); /* Qt::FramelessWindowHint 产生一个无边框的窗口,此时用户无法移动窗口和改变窗口的大小 Qt::MSWindowsFixedSizeDialogHint 窗体不能调整大小 Qt::WindowStaysOnTopHint 窗体置顶 Qt::WindowStaysOnBottomHint 使窗口停留在所有其他窗口之下 Qt::WindowTransparentForInput 通知窗口系统,该窗口仅用于输出(即仅显示内容)不需要输入,因此当产生输入事件时,该窗 口就像不存在一样,这意味着,无法用鼠标选中此窗口,当用鼠标点击该窗口时会直接选中该窗口之下的窗口 Qt::WindowDoesNotAcceptFocus 通知窗口系统,该窗口不接收输入焦点 Qt::WindowTitleHint 为窗口添加一个标题栏 Qt::SubWindow 有标题栏,但是无按钮;该部件是一个子窗口 Qt::SplashScreen 该部件是一个欢迎窗口;窗口无边框化,无任务栏窗口 Qt::ToolTip 该部件是一个提示窗口,该窗口没有标题栏和边框;提示窗口,窗口无边框化,无任务栏窗口 Qt::Popup 弹出窗口,窗口无边框化,任务栏无按钮 Qt::Tool 该部件是一个工具窗口,通常是一个用于显示工具按钮的小窗口, 若工具窗口有父部件,则将始终保持在父部件的最上面,否则与使用了 Qt::WindowStaysOnTopHint 提示相同
Qt::Widget 默认窗口,有最小化、最大化、关闭按钮;如新的窗口部件没有父窗口部件,则它是一个独立的窗口,否则就是一个子窗口部件 Qt::Window 无论是否有父窗口部件,新窗口部件都是一个窗口,通常有一个窗口边框和一个标题栏
Qt::Dialog : 新窗口部件是一个对话框,指示部件是应该作为对话框窗口(即标题栏中通常没有最大化或最小化按钮)。这是QDialog的默认类型。
如果要将其用作模态对话框,则应从另一个窗口启动它,或者如果有父窗口,则与QWidget::windowModality属性一起使用。
如果将其设置为模态,则对话框将阻止应用程序中的其他顶级窗口获取任何输入。我们将具有父级的顶级窗口称为辅助窗口
Qt::WindowSystemMenuHint 为窗口添加一个系统菜单,并尽可能添加一个关闭按钮(比如,在 Mac 上) Qt::WindowMinimizeButtonHint 为窗口添加一个最小化按钮 Qt::WindowMaximizeButtonHint 为窗口添加一个最大化按钮 Qt::WindowMinMaxButtonsHint 为窗口添加一个最大化和最小化按钮 Qt::WindowCloseButtonHint 为窗口添加一个关闭按钮
Qt::CustomizeWindowHint : 关闭默认的窗口标题提示 */
常用操作
win.h--事件
#ifndef WIN_H #define WIN_H #include <QWidget> #include <QLabel> #include <QDebug> class Win : public QWidget { Q_OBJECT public: Win(QWidget *parent = nullptr); ~Win(); //void closeEvent(QCloseEvent *e); //重写部件关闭事件 //void showEvent(QShowEvent *e); //部件显示事件 //void hideEvent(QHideEvent *e); //部件隐藏事件 //void moveEvent(QMoveEvent *e); //部件移动事件 //void resizeEvent(QResizeEvent *e); //部件大小改变事件 private: QLabel* label; }; #endif // WIN_H
win.cpp
#include "win.h" Win::Win(QWidget *parent) : QWidget(parent) { this->resize(300,200); //设置窗口大小 label=new QLabel("标签控件",this); bool b=isWindow(); //判断是否为独立窗口 //没有父控件的窗口 QWidget * ww=label->window(); //得到部件所在的独立窗口 //如果部件是窗口,则返回部件本身 //Win(0x76fe1c) label->window()->setWindowTitle("窗口设置"); label->move(10,10); ww=label->parentWidget();//得到窗口的父窗口 //Win(0x76fe1c) QString str=windowTitle(); //返回窗口标题 QRect rect=geometry(); //获取客户区的QRect数据 //QRect(0,0 300x200) b=label->isVisible(); //判断部件是否可见 //【这个函数不要在构造构造函数中使用,因为部件好没有显示出来,只能false】 b=label->isHidden(); //判断部件是否隐藏 label->setVisible(true); //设置部件是否可见 label->setHidden(false); //设置部件是否隐藏 //label->hide(); // 指定部件隐藏 qDebug()<<b; } Win::~Win() { }
setParent(QWidget * parent) 设置父部件
main.cpp
#include "win.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); Win w; w.show(); w.showMaximized(); //调用最大化显示窗口 w.showMinimized(); //调用最小化显示窗口 return a.exec(); }
坐标与大小
this->resize(300,200); label=new QLabel("标签",this); label->resize(50,50); //设置部件大小 label->move(10,10); QSize s=label->frameSize(); //部件的大小(即宽和高) //QSize(50, 50) QRect r=this->frameGeometry(); //部件的矩形属性--相对于父窗口 //QRect(10,10 50x50) QPoint p=label->pos(); //部件左上角坐标--相对于父窗口 //QPoint(10,10) QRect r1=this->rect(); //部件的几何形状(仅能获取部件的宽/高) int w,h; w=this->width(); //返回部件的宽 h=this->height(); //返回部件的高 r=label->geometry(); //部件相对于父部件的几何形状 //QRect(10,10 50x50) s=label->size(); //部件的大小 //QSize(50, 50) qDebug()<<s; qDebug()<<r1;
窗口大小的限制
this->setMaximumSize(500,500); //设置部件的最大宽高 this->setMinimumSize(100,100); //设置部件的最小宽高 QSize s=this-> maximumSize(); //返回部件的最大宽高 s=this->minimumSize(); //返回部件的最小宽高 this->setMaximumHeight(600); //设置部件的最大高度 this->setMaximumWidth(1000); //设置部件的最大宽度 int x=this-> maximumHeight(); //返回部件的最大高度 x=this-> minimumHeight(); //返回部件的最小高度 x=this-> maximumWidth(); //返回部件的最大宽度 x=this-> minimumWidth(); //返回部件的最小宽度
this->setFixedHeight (300); //把窗口的高度设置为固定大小 //此时窗口的高度无法(比如通过鼠标)调整其大小,仅能调整窗口的宽度,并且窗口无法最大化 this->setFixedWidth (600); //把窗口的宽度设置为固定大小 //此时窗口的高度无法(比如通过鼠标)调整其大小,仅能调整窗口的高度,并且窗口无法最大化 this->setFixedSize(1000,500); //把窗口的高度和宽度设置为固定的大小 //此时窗口的大小无法改变(比如通过鼠标调整其大小),且窗口不能最大化
最大化、最小化、满屏
//this->showMaximized();// 最大化部件 bool b=isMaximized();//部件是否最大化 //this->showMinimized();//最小化部件 //b=this->isMinimized();//部件是否最小化 //this->showFullScreen(); //全屏显示 //此时任务栏都被覆盖 b=this->isFullScreen(); //是否全屏
this->showNormal(); //普通模式
this->setWindowState(Qt::WindowMaximized); //设置窗口状态 /* Qt::WindowNoState 正常状态 Qt::WindowMinimized 窗口最小化 Qt::WindowMaximized 窗口最大化 Qt::WindowFullScreen 窗口充满整个屏幕,其周围没有任何框架(比如无标题栏)。 Qt::WindowActive 窗口是活动窗口,即该窗口具有键盘焦点 */
标题、透明度、启用/禁用
this->setWindowTitle("窗口"); //设置窗口标题 //仅适用于顶级窗口部件(比如窗口和对话框)。 QString str=this->windowTitle(); //返回窗口标题 this->setWindowOpacity(1);//设置部件的透明度 //其范围是 1.0(不透明)到 0.0(透明),默认值为 1.0 qreal q=this->windowOpacity(); //返回部件的透明度 //qreal 是 Qt 使用 typedef 定义的 double 类型 //窗体及其子窗体全部透明 button->setEnabled(true); //是否启用部件(默认为 true) //禁用的部件不会处理鼠标和键盘事件,QAbstractButton 除外。 //禁用部件会隐式禁用其所有子部件 //启用窗口小部件将启用除顶层窗口小部件或已明确禁用的所有子窗口小部件 //无法在父窗口是禁用状态时,明确的启用不是窗口的子部件。 //禁用/启用状态发生变化时会产生 QEvent::EnabledChange 事件(处理函数为changeEvent());
控件内容展示区域:
setContentsMargins(左, 上, 右, 下) 设置控件内容展示区域到边框的距离
getContentsMargins() 获取内容边距 (左, 上, 右, 下) 元组
(50, 50, 0, 0) 就是展示区域到各边框的距离
contentsRect() 获取控件内容展示区域的位置和大小。
QRect(50, 50, 150, 50) 参数1参数2 :展示区域到控件左上角的坐标 参数3:展示区域的宽;参数4:展示区域的高
注意:必须是控件本身留够对应的大小