我想要对QWidget进行Subclass ...
Widget::Widget(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::ImgWidget)
{
// Is this the right place or does it need to be outside like: Widget::layout...
QHBoxLayout *hLayout = new QHBoxLayout;
...
hLayout->addWidget( someWidget );
this->setLayout(hLayout);
}
...然后在一个实例中,我想将一个小部件添加到布局中,如
Widget *widget = new Widget();
...
widget->hLayout->addWidget( someOtherWidget );
Python中的等价物将由self.layout = QHBoxLayout()
之类的'self'关键字完成,但我认为无法使用this
关键字
但更一般......在C ++中使用它的最佳方法是什么,因为我在pyqt中使用了很多
答案 0 :(得分:2)
任何QWidget
都可以通过layout
函数提供对布局的访问权限。
Widget* widget = new Widget();
QLayout* layout = widget->layout();
我不知道为什么要外部修改窗口小部件的布局,但此时您需要了解该实际布局类型。了解布局类型,您可以投射和使用它。
QHBoxLayout* hLayout = qobject_cast<QHBoxLayout>(layout);
答案 1 :(得分:0)
实现一个函数addSubWidget(QWidget * aubWidget),其余代码没问题,并使hLayout变为私有。或者击球,使用带有演员的布局功能,比如@James sugested。
在c ++中,我们建议使用此&gt; hLayout,以确保您不会使用同名的局部变量来对其进行描述。