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 中删除 qwidget

QT UI 使一个QWidget里面的元素自动填充满本QWidget

Qt 设计器创建的 QWidget 不被识别为 QWidget

Qt : Qwidget 大小

在qt creator中用ui设计器创建了一个QDialog的窗口,添加了一个QWidget部件,怎么能在Qwidget上用QPainter

Qt5 QWidget:悬停效果延迟