//clposter.h
class CLPoster : public QMainWindow
{
    Q_OBJECT

public: CLPoster();

private slots: QWidget createCentralWidget(); void createActions(); void createMenu(); void createStatusBar(); void loadSavedPosts(); };



//clposter.cpp
CLPoster::CLPoster()
{
    setWindowTitle("Craigslist Poster");

QWidget mainWidget = createCentralWidget();
setCentralWidget(mainWidget);


// createActions();
// createMenu();
// createStatusBar();

// loadSavedPosts();
// checkForActionsNeeded(); //可能想分解成更多的功能
}


我得到的错误是这样的:


/usr/include/qt4/QtGui/qwidget.h ::在构造函数“ CLPoster :: CLPoster()”中:

/usr/include/qt4/QtGui/qwidget.h:787:错误:“ QWidget :: QWidget(const QWidget&)”是私有的

/home/brett/projects/CLPoster/CLPoster-build-desktop/../CLPoster/clposter.cpp:9:错误:在此上下文中

/home/brett/projects/CLPoster/CLPoster-build-desktop/../CLPoster/clposter.cpp:10:错误:没有匹配函数可调用“ CLPoster :: setCentralWidget(QWidget&)”

/usr/include/qt4/QtGui/qmainwindow.h:141:候选对象是:void QMainWindow :: setCentralWidget(QWidget *)


我在解释错误消息时遇到了麻烦。它说没有匹配的函数调用,但是应该从QMainWindow继承它。可能是我对Q ++的了解不如对QT的了解多,这是我第一次使用它,但是不知道。谢谢您的帮助。

最佳答案

所有QWidget项目都必须在免费存储区(new)中进行分配,因为它们都必须具有“父项”。在Qt中,父级将删除其子级(使用delete)。这就是为什么任何函数返回,接受,不管窗口小部件打算做什么,都是在指向窗口小部件的指针而不是窗口小部件本身的情况下进行的;您需要这样做。

关于c++ - 不明白为什么我不能在QMainWindow子类中调用setCentralWidget,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4948556/

10-11 18:05