//clposter.h
class CLPoster : public QMainWindow
{
Q_OBJECT<p></p>
<p>public:
CLPoster();</p>
<p>private slots:
QWidget createCentralWidget();
void createActions();
void createMenu();
void createStatusBar();
void loadSavedPosts();
};
</p>
//clposter.cpp
CLPoster::CLPoster()
{
setWindowTitle("Craigslist Poster");<p></p>
<pre><code>QWidget mainWidget = createCentralWidget();
setCentralWidget(mainWidget);
</code></pre>
<p>// createActions();
// createMenu();
// createStatusBar();</p>
<p>// loadSavedPosts();
// checkForActionsNeeded(); //May want to break up into more functions
}
</p>
我得到的错误是这样的:
/usr/include/qt4/QtGui/qwidget.h:: In constructor ‘CLPoster::CLPoster()’: /usr/include/qt4/QtGui/qwidget.h:787: error: ‘QWidget::QWidget(const QWidget&)’ is private /home/brett/projects/CLPoster/CLPoster-build-desktop/../CLPoster/clposter.cpp:9: error: within this context /home/brett/projects/CLPoster/CLPoster-build-desktop/../CLPoster/clposter.cpp:10: error: no matching function for call to ‘CLPoster::setCentralWidget(QWidget&)’ /usr/include/qt4/QtGui/qmainwindow.h:141: candidates are: void QMainWindow::setCentralWidget(QWidget*)
我无法解释错误消息。它说没有匹配的函数调用,但它应该是从 QMainWindow 继承的。它可能只是缺乏对 C++ 的理解,而不是 QT,我第一次使用它,但不知道。感谢您的帮助。
最佳答案
所有 QWidget 项都必须在自由存储区 (new
) 中分配,因为它们都必须有“父项”。在 Qt 中,父项将删除其子项(使用 delete
)。这就是为什么任何函数返回、接受,无论小部件将要做什么,都是在指向小部件的指针上进行的,而不是小部件本身;你需要做同样的事情。
关于c++ - 不明白为什么我不能在 QMainWindow 子类中调用 setCentralWidget,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4948556/