0

对于我的课程,我应该编写一个名为 Qtunes 的 iTunes 式程序的框架。我决定通过使用 3 个 ListWidgets 和一个 TableWidget 来做到这一点。所以我在 Qt creator 中编写了以下代码(我们应该手动编写代码而不是使用设计器),

#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/

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

4

1 回答 1

0

尝试以下操作:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent)
{
    QWidget* centralWidget = new QWidget(this);
    //...
    //Skip your code 
    //...
    centralWidget->setLayout(mainLayout);
    setCentralWidget(centralWidget);
    setWindowTitle("Version 2");
}
于 2013-02-22T08:21:48.287 回答