tr1のshared_ptrとQt 4.8.2を使用しようとしていますが、いくつかの問題があります。ここに私のコード:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <string>
#include <tr1/memory>
using namespace std::tr1;
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QTreeView>
#include <QListView>
#include <QWidget>
#include <iostream>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
shared_ptr<QHBoxLayout> mainLayout(new QHBoxLayout);
shared_ptr<QTreeView> mainFeeds(new QTreeView);
mainLayout->addWidget(mainFeeds.get());
shared_ptr<QWidget> mainWidget (new QWidget);
mainWidget->setLayout(mainLayout.get()); // <--- this line
shared_ptr<QWidget> rightWidget(new QWidget);
shared_ptr<QVBoxLayout> rightLayout(new QVBoxLayout);
shared_ptr<QListView> rightItems(new QListView);
rightLayout->addWidget(rightItems.get());
shared_ptr<QListView> rightPreview(new QListView);
rightLayout->addWidget(rightPreview.get());
rightWidget->setLayout(rightLayout.get());
mainLayout->addWidget(rightWidget.get());
this->setCentralWidget(mainWidget.get());
}
MainWindow::~MainWindow()
{
delete ui;
}
そして出力(私はQt Creatorを使用しています):
/path/myproject-build-desktop-Qt_4_8_2_in_PATH_ local _Release/myproject を開始しています... プログラムが予期せず終了しました。/path/myproject-build-desktop-Qt_4_8_2_in_PATH_ local _Release/myproject はコード 0 で終了しました
マークされた行にコメントを付けると、プログラムは実行されますが、空のウィンドウが表示されます。
2 つの質問があります。
- この行がエラーになるのはなぜですか?
- Qt でスマート ポインターを使用する (実際には堅牢な C++ コードをビルドする) のは正しい方法ですか?
よろしくお願いします。