qt5 --QWidget类学习笔记

Learning QWidget!!

       由于qt中的可视控件都是继承于QWidget这个类,所以其他的空间有很多属性都是QWidget的属性;在学习其他空间之前,得了解QWidget;

       看QWidget的manual就可以发现,qt提供原子的用户接口,它接收鼠标事件,键盘事件,还有其他从系统窗口来的事件,以及在窗口绘制其本身;所有的widget都是矩形的,他们以Z轴排序;子窗口都在父窗口前面;还有在构建一个widget的时候,所有的widget都接收两个参数:

       他的父窗口是谁(默认为0):QWidget *parent = 0

       他的窗口标记(默认为顶级窗口):Qt::WindowFlags f = 0

      Qt::WindowFlags

       通过它可以定制窗口显示,比如最大化,最小化,关闭按钮,帮助按钮,只要设置相应的位,比如只显示关闭按钮:

       myframe->setWindowFlags(Qt::CustomizeWindowHint|

                           Qt::WindowCloseButtonHint);

      

区分顶级窗口和子窗口

       Qt说没有父窗口的窗口就是顶级窗口,也就是没有父部件的部件一般都是独立的窗口,可以分别setWindowTitle(),setWindowIcon();title和icon都是窗口部件的属性;

       没有窗口部件小部件就是子部件;这话有点拗口;上原话:Non-window widgets are child widgets,displayed within their parent widgets;

      

      定制的窗口:涉及到QPainter class;或者用paintEvent(),这里QT提供了一个例子,Analog Clock example;或者使用Graphics View Framework;

       有两种方式设置一个widget的大小:

    setGeometry(int x,int y,int w,int h);resize(int w,int h);resize(QSize&size)

       当窗口大小改变,会接收到这个事件:resizeEvent(QResizeEvent * event);

 

       Qt中的事件

如何检测一个子部件的鼠标事件,只要在handler中调用子部件的underMouse()函数就可以判断,返回true表示是单击或者其他这个子部件;

       可以看Scribble example的实现,去参考事件的使用;

       常用的事件:

       Mouseevent

       1、paintEvent();

       2、resizeEvent();

       3、mousePressEvent();

       4、mouseReleaseEvent()

       5、mouseDoubleClickEvent();

       Keyboardevent

       1、keyPressEvent()

       2、focusInEvent()

       3、focusOutEvent()

      有其他不常用的

       1、mouseMoveEvent()

       2、keyReleaseEvent()

       3、wheelEvent()

       4、enterEvent()

       5、leaveEvent()

       6、moveEvent()

       7、closeEvent()

 

这里是相关功能和属性:

Context

Functions and Properties

Window functions          

show(), hide(), raise(), lower(), close().

Top-level windows

windowModifiedwindowTitlewindowIconwindowIconTextisActiveWindowactivateWindow(),

 minimizedshowMinimized(), maximizedshowMaximized(),fullScreenshowFullScreen(), showNormal().

Window contents

update(), repaint(), scroll().

Geometry

posx(), y(), rectsizewidth(), height(), move(), resize(), sizePolicysizeHint(), minimumSizeHint(), 

updateGeometry(), layout(), frameGeometrygeometry,childrenRectchildrenRegionadjustSize(), 

mapFromGlobal(), mapToGlobal(), mapFromParent(), mapToParent(), 

maximumSizeminimumSizesizeIncrement,baseSizesetFixedSize()

Mode

visibleisVisibleTo(), enabledisEnabledTo(), modalisWindow(), mouseTrackingupdatesEnabledvisibleRegion().

Look and feel

style(), setStyle(), styleSheetcursorfontpalettebackgroundRole(), setBackgroundRole(), fontInfo(), fontMetrics().

Keyboard focus functions

focusfocusPolicysetFocus(), clearFocus(), setTabOrder(), setFocusProxy(), focusNextChild(), focusPreviousChild().

Mouse and keyboard grabbing

grabMouse(), releaseMouse(), grabKeyboard(), releaseKeyboard(), mouseGrabber(), keyboardGrabber().

Event handlers

event(), mousePressEvent(), mouseReleaseEvent(), mouseDoubleClickEvent(), mouseMoveEvent(),

 keyPressEvent(), keyReleaseEvent(), focusInEvent(),focusOutEvent(), wheelEvent(), enterEvent(),

 leaveEvent(), paintEvent(), moveEvent(), resizeEvent(), closeEvent(), dragEnterEvent(), 

dragMoveEvent(),dragLeaveEvent(), dropEvent(), childEvent(), showEvent(), hideEvent(), customEvent(). changeEvent(),

System functions

parentWidget(), window(), setParent(), winId(), find(), metric().

Interactive help

setToolTip(), setWhatsThis()

 

       Widget的样式表(style sheets)

       知道有这个东西就行了暂时;用到的时候知道在哪里找;

 

       透明度和双缓冲

      

       创建半透明窗口

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值