QWidget:就是一个容器
QFrame:也是一个容器,不过是一个有边框的容器
两者的主要区别就是容器有无边框,比如组合成下面组件时,最好使用QFrame:
QFrame与QWidget的区别
从QWidget继承过来的MyWidget并没有显示出样式来。
具体原因还不是很清楚,不过下面一段话可能对我们有些帮助:
QWidget Supports only the background, background-clip and background-origin properties.
If you subclass from QWidget, you need to provide a paintEvent for your custom QWidget as below:
void CustomWidget::paintEvent(QPaintEvent *)
{
QStyleOption opt;
opt.init(this);
QPainter p(this);
style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
}
The above code is a no-operation if there is no stylesheet set.
Warning: Make sure you define the Q_OBJECT macro for your custom widget.
————————————————
版权声明:本文为CSDN博主「ningto.com」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/tujiaw/article/details/51582745
OK的结论:??????
1. 区别主要在于,在进行自动布局时:
多个frame 容器 可以进行不重叠的布局。
多个widget 容器 布局,会被重叠在一起。
2. 当部件不同时,采用多个不同的Ui来显示,最方便?
当部分部件相同,需要共用时,则有可能采用不同的容器会更方便一些?
QFrame是一个带边框的容器,适合用于需要边框的布局。多个QFrame可以不重叠布局,而多个QWidget可能会重叠。自定义QWidget需要提供paintEvent以显示样式。在设计UI时,根据部件的相似性和复用性选择合适的容器。

3736

被折叠的 条评论
为什么被折叠?



