Qt输出一个小盒子?

时间:2013-02-22 05:38:48

标签: c++ qt user-interface

对于我的班级,我应该编写一个名为Qtunes的iTunes式程序的框架。我决定使用3个ListWidgets和一个TableWidget来做到这一点。所以我在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/

我知道我在某处做错了,我花了最后几个小时试图找到哪里。 谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

尝试以下方法:

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