Qt - QWidget 到底是啥
Posted
技术标签:
【中文标题】Qt - QWidget 到底是啥【英文标题】:Qt - What exactly is QWidgetQt - QWidget 到底是什么 【发布时间】:2011-04-07 19:31:32 【问题描述】:在C++ GUI Programming with Qt 4
一书中,它在第一章的一个例子中提到QWidget
作为应用程序的主窗口。
而且,在Qt Reference Documentation
:http://doc.qt.io/qt-4.8/qwidget.html 上有大量关于 QWidget 的信息。
但是,基线是什么? QWidget主要做什么?我应该什么时候考虑?
【问题讨论】:
你了解面向对象编程吗?实际上,通过一些示例应该可以帮助您了解 QWidget 是什么。 【参考方案1】:一种思考方式是任何知道如何在屏幕上显示自己的对象都是 QWidget(特别是 QWidget 的某个子类)。
有一些像 QPicture 这样的对象可以表示图像,但是 QPicture 本身不知道如何将自己放在屏幕上。您通常需要将它与例如 QLabel 结合使用(这是一种 QWidget)。
【讨论】:
屏幕window
本身呢?是QWidget
吗?如何告诉程序QWidget
现在正在充当窗口?
@user588855:应用程序的主窗口也是一种 QWidget,它知道如何绘制窗口边框并与操作系统提供的功能(如关闭按钮)进行交互。您可以通过将其放在 QMainWindow 或类似容器中来显示带有框架的任意 QWidget。
我认为这甚至不需要(Qt3 肯定不需要)- 不属于窗口的QWidget
本身就变成了一个窗口。不过,对于懒惰的程序员来说,这主要是一种选择。【参考方案2】:
它是窗口对象的抽象。每个可见/不可见的 Qt 窗口相关对象都继承自 QWidget。
只考虑车辆,它是汽车、卡车和其他东西的抽象。
【讨论】:
为什么书中提到它可以充当main window
?
@user:那是因为奇趣科技的人们认为,如果每个 QWidget 都可以充当主窗口,那就太好了。
@user588855:您可以使用(几乎)与驾驶卡车驾驶汽车相同的方式。【参考方案3】:
Widget 是 X11 用语,表示比其他系统称为 控件 更通用的东西。小部件可以是按钮、列表视图、窗口等...
顺便说一句,它应该来自 Window Gadget。
【讨论】:
Qt 不限于 X11,它是跨平台的。 @xis19:从词源上讲,QWidget 来自 X11 的 Widgets。 我知道 X11 相当古老,但是1920 ?! @MSalters:不知道 widget 在 X Window System 之前作为一个词存在。那么,QWidget来自X11对widget的使用,它本身来自widget或者来自window gadget(或者,更有可能来自他们两个)。【参考方案4】:在像 X11 这样的窗口系统中,顶层窗口和小部件之间没有区别。所有这些都被称为“窗口”,它们都有一个父级和一个子级(根窗口除外,它通常是绘制桌面壁纸的位置)。因此,小部件可以是***窗口(即根窗口的子窗口)或任何其他窗口是有意义的。
【讨论】:
以上是关于Qt - QWidget 到底是啥的主要内容,如果未能解决你的问题,请参考以下文章
QT UI 使一个QWidget里面的元素自动填充满本QWidget
Qt 设计器创建的 QWidget 不被识别为 QWidget
在qt creator中用ui设计器创建了一个QDialog的窗口,添加了一个QWidget部件,怎么能在Qwidget上用QPainter