我正在尝试使用QStringListModel
和QListView
显示一个非常简单且简短的国家/地区列表。但是当我编译它时,我得到一个空白的窗口。
这是我班级的代码:
#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
此代码有什么问题?
答案 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
- 您的代码就可以使用。