2013-02-22 73 views
0

对于我的课程,我应该编写一个叫做Qtunes的iTunes程序框架。我决定使用3个ListWidgets和一个TableWidget来做到这一点。所以我写了Qt Creator中下面的代码(我们应该通过手不使用设计的代码吧),Qt输出一个小盒子?

#include "mainwindow.h" 
#include "ui_mainwindow.h" 
#include<QtGui> 

MainWindow::MainWindow(QWidget *parent) : 
    QMainWindow(parent) 

// ui(new Ui::MainWindow) 
//{ 
// ui->setupUi(this); 
//} 
{ 
    genreList = new QListWidget(this); 
    artistList = new QListWidget(this); 
    albumList = new QListWidget(this); 

    songTable = new QTableWidget(this); 

    genLabel = new QLabel(this); 
    genLabel->setText("Genre"); 

    artistLabel = new QLabel(this); 
    artistLabel->setText("Artist"); 

    albLabel = new QLabel(this); 
    albLabel->setText("Album"); 


    QHBoxLayout *labelLayout = new QHBoxLayout; 
    labelLayout->addWidget(genLabel); 
    labelLayout->addWidget(artistLabel); 
    labelLayout->addWidget(albLabel); 

    QHBoxLayout *topLayout = new QHBoxLayout; 
    topLayout->addWidget(genreList); 
    topLayout->addWidget(artistList); 
    topLayout->addWidget(albumList); 

    QHBoxLayout *bottomLayout = new QHBoxLayout; 
    bottomLayout->addWidget(songTable); 

    QVBoxLayout *mainLayout = new QVBoxLayout; 
    mainLayout->addLayout(labelLayout); 
    mainLayout->addLayout(topLayout); 
    mainLayout->addLayout(bottomLayout); 

    setLayout(mainLayout); 
    setWindowTitle("Version 2"); 
} 

我没想到能有工作,但预计至少看到listWidgets和这样。相反,我得到这个:

http://postimage.org/image/krrs2ijmx/

我知道我做错了什么地方,我已经花了几个小时试图找到地方。 谢谢你的帮助。

+0

尝试没有父创建标签,ListWidget和TableWidget,我的意思是这样genLabel =新QLabel(),genreList =新QListWidget();然后将这些小部件添加到布局 – 2013-02-22 06:52:35

回答

0

尝试以下操作:

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

Dude。非常感谢。我一直在试图弄清楚我做错了什么。认真的人,非常感谢你。 – JonAmen 2013-02-22 12:29:22