QListView无法在Mac OS中显示

时间:2015-02-24 09:21:35

标签: c++ macos qt

我正在尝试使用QStringListModelQListView显示一个非常简单且简短的国家/地区列表。但是当我编译它时,我得到一个空白的窗口。

这是我班级的代码:

#include "FenPrincipale.h"

FenPrincipale::FenPrincipale()
{
    QVBoxLayout *layout = new QVBoxLayout;

    QStringList listePays;
    listePays << "France" << "Espagne" << "Italie" << "Portugal" << "Suisse";
    QStringListModel *modele = new QStringListModel(listePays);

    QListView *vue = new QListView;
    vue->setModel(modele);
    layout->addWidget(vue);

    setLayout(layout);
}

标题:

#ifndef FENPRINCIPALE_H
#define FENPRINCIPALE_H

#include <QMainWindow>
#include <QVBoxLayout>
#include <QStringList>
#include <QListView>
#include <QStringListModel>

class FenPrincipale : public QMainWindow
{
    Q_OBJECT

public:
    FenPrincipale();
};

#endif // FENPRINCIPALE_H

主要:

#include "FenPrincipale.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    FenPrincipale w;
    w.show();

    return a.exec();
}

pro文件:

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = utilisationModeleSimple
TEMPLATE = app


SOURCES += main.cpp\
        FenPrincipale.cpp

HEADERS  += FenPrincipale.h

FORMS    += FenPrincipale.ui

我目前正在使用基于Qt 5.4.0的Qt Creator 3.3.0(Clang 6.0(Apple),64位); OS X Yosemite 10.10.2

此代码有什么问题?

1 个答案:

答案 0 :(得分:2)

如果您想使用QMainWindow,则需要将小部件设置为中心:QMainWindow::​setCentralWidget。 Qt文档中有很好的样本。

FenPrincipale::FenPrincipale()
{
    QStringList listePays;
    listePays << "France" << "Espagne" << "Italie" << "Portugal" << "Suisse";
    QStringListModel *modele = new QStringListModel(listePays);

    QListView *vue = new QListView;
    vue->setModel(modele);

    setCentralWidget( vue );
}

如果您不需要QMainWindow功能,那么只需将QWidget替换为QMainWindow - 您的代码就可以使用。