我尝试使用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 退出
当我评论标记的行时,程序运行但我有一个空窗口。
我有两个问题:
- 为什么这条线会出错?
- 在 Qt 中使用智能指针(实际上是构建健壮的 C++ 代码)是正确的方法吗?
为了您的帮助,提前,谢谢。