在QWidget的子类上使用setCentralWidget? 不确定我是否正确地问这个问题,因为我对C++和QT是新的。但是,假设我有一个QWidget的子类: class childofqwidget : public QWidget

在QWidget的子类上使用setCentralWidget? 不确定我是否正确地问这个问题,因为我对C++和QT是新的。但是,假设我有一个QWidget的子类: class childofqwidget : public QWidget,c++,qt,qmainwindow,C++,Qt,Qmainwindow,我可以将指向子类对象的指针传递给QMainWindow的setCentralWidget成员函数吗?大概是这样的: mainlayout = new childofqwidget; setCentralWidget(mainlayout); 我问这个问题的原因是因为我已经创建了QWidget的一个子类,它有一个带有文本框和一些按钮的布局。我想将其作为QMainWindow对象的中心小部件插入。这可能吗?如果没有更好的方法,我应该这样做吗?是的,那很好,这是通常的方法 (调用变量layout,当

我可以将指向子类对象的指针传递给QMainWindow的setCentralWidget成员函数吗?大概是这样的:

mainlayout = new childofqwidget;
setCentralWidget(mainlayout);

我问这个问题的原因是因为我已经创建了QWidget的一个子类,它有一个带有文本框和一些按钮的布局。我想将其作为QMainWindow对象的中心小部件插入。这可能吗?如果没有更好的方法,我应该这样做吗?

是的,那很好,这是通常的方法


(调用变量
layout
,当它是
小部件时
有点不寻常/混乱,但这只是命名而已。)

好吧。我试过这样做,但它无法编译。。。编译器告诉我setCentralWidget只接受(*QWidget)类型的参数。我可能执行了一些错误的操作。让我再试一次……只要
mainloayout
声明为
childofqwidget*mainloayout
,您的代码片段就可以工作了。让它发挥作用;上一个错误是由于我的错误实现造成的。谢谢。你应该养成每个生词都用大写字母来命名类名的习惯
childofwidget
应命名为
childofwidget
。变量和方法名称应以小写字母和大写字母开头:
mainlayout
应命名为
mainlayout
。(这是Qt命名约定。)