C++ 一个小盒子?

C++ 一个小盒子?,c++,qt,user-interface,C++,Qt,User Interface,在我的课堂上,我应该编写一个名为Qtunes的iTunes类程序的框架。我决定使用3个ListWidget和一个TableWidget来实现这一点。因此,我在Qt creator中编写了以下代码(我们应该手动编写代码,而不是使用设计器) #包括“mainwindow.h” #包括“ui_main window.h” #包括 主窗口::主窗口(QWidget*父窗口): QMainWindow(父窗口) //用户界面(新用户界面::主窗口) //{ //用户界面->设置用户界面(此); //} {

在我的课堂上,我应该编写一个名为Qtunes的iTunes类程序的框架。我决定使用3个ListWidget和一个TableWidget来实现这一点。因此,我在Qt creator中编写了以下代码(我们应该手动编写代码,而不是使用设计器)

#包括“mainwindow.h”
#包括“ui_main window.h”
#包括
主窗口::主窗口(QWidget*父窗口):
QMainWindow(父窗口)
//用户界面(新用户界面::主窗口)
//{
//用户界面->设置用户界面(此);
//}
{
genreList=新的QListWidget(此);
artistList=新的QListWidget(此);
albumList=新的QListWidget(此);
songTable=新的QTableWidget(此);
genLabel=新的QLabel(此);
genLabel->setText(“流派”);
artistLabel=新的QLabel(本);
artistLabel->setText(“艺术家”);
albLabel=新的QLabel(本);
albLabel->setText(“专辑”);
QHBoxLayout*labelLayout=新的QHBoxLayout;
labelLayout->addWidget(genLabel);
labelLayout->addWidget(artistLabel);
labelLayout->addWidget(albLabel);
QHBoxLayout*topLayout=新的QHBoxLayout;
topLayout->addWidget(genreList);
topLayout->addWidget(artistList);
topLayout->addWidget(相册列表);
QHBoxLayout*底部布局=新的QHBoxLayout;
bottomLayout->addWidget(songTable);
QVBoxLayout*mainLayout=新的QVBoxLayout;
主布局->添加布局(labelLayout);
主布局->添加布局(topLayout);
主布局->添加布局(底部布局);
设置布局(主布局);
setWindowTitle(“第2版”);
}
我没想到它能正常工作,但我希望至少能看到listWidgets之类的东西。相反,我得到了这个:

我知道我在某个地方做错了什么,我花了几个小时试图找到哪里。 谢谢您的帮助。

请尝试以下操作:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent)
{
    QWidget* centralWidget = new QWidget(this);
    //...
    //Skip your code 
    //...
    centralWidget->setLayout(mainLayout);
    setCentralWidget(centralWidget);
    setWindowTitle("Version 2");
}

尝试在没有父对象的情况下创建标签、ListWidget和TableWidget,我的意思是像这样的genLabel=new QLabel(),genreList=new QListWidget();然后将这些小部件添加到layoutDude。非常感谢你。我一直在绞尽脑汁想弄清楚我做错了什么。说真的,老兄,非常感谢你。
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent)
{
    QWidget* centralWidget = new QWidget(this);
    //...
    //Skip your code 
    //...
    centralWidget->setLayout(mainLayout);
    setCentralWidget(centralWidget);
    setWindowTitle("Version 2");
}