首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >稍后创建QScopedPointer实例

稍后创建QScopedPointer实例
EN

Stack Overflow用户
提问于 2014-08-11 01:31:37
回答 3查看 4.2K关注 0票数 7

例如,下面是我的代码

代码语言:javascript
复制
QScopedPointer<QTimer> timer2(new QTimer);

但我想定义一下

代码语言:javascript
复制
QScopedPointer<QTimer> timer2; 

并创建一个实例。

代码语言:javascript
复制
timer2(new QTimer);

在mainwindow.cpp中

多么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-08-11 05:43:58

尝试以下几点:

代码语言:javascript
复制
// mainwindow.h
class MainWindow : public QMainWindow
{
private:
    QScopedPointer<QTimer> timer2;
};

如果要在构造函数中创建实例,请使用以下命令:

代码语言:javascript
复制
// mainwindow.cpp
MainWindow::MainWindow()
    :timer2(new QTimer)
{
}

或者,如果希望在MainWindow的任意成员函数中创建实例,请使用以下命令:

代码语言:javascript
复制
// mainwindow.cpp
void MainWindow::someFunction()
{
    timer2.reset(new QTimer);
}

还值得查看C++中的初始化列表和QScopedPointer的文档。

票数 9
EN

Stack Overflow用户

发布于 2014-08-11 05:43:14

使用方法reset of QScopedPointer

代码语言:javascript
复制
timer2.reset(new QTimer());
票数 3
EN

Stack Overflow用户

发布于 2014-08-11 14:18:16

你所做的一切等于是过早的悲观。在堆中单独创建MainWindow类的成员时,只需将它们作为成员放入类中:

代码语言:javascript
复制
// interface
#include <QMainWindow>
#include <QTimer>

class MainWindow : public QMainWindow {
  Q_OBJECT
  QTimer m_timer;
public:
  MainWindow(QWidget * parent = 0, Qt::WindowFlags flags = 0);
};

// implementation
MainWindow::MainWindow(QWidget * parent, Qt::WindowFlags flags) :
  QMainWindow(parent, flags),
  m_timer()
{
  ...
}

当然,您通常不希望在接口(头)文件中公开MainWindow实现的所有细节。

代码语言:javascript
复制
// interface
#include <QMainWindow>

class MainWindowPrivate;
class MainWindow : public QMainWindow {
  Q_OBJECT
  Q_DECLARE_PRIVATE(MainWindow)
  QScopedPointer<MainWindowPrivate> const d_ptr;
public:
  MainWindow(QWidget * parent = 0, Qt::WindowFlags flags = 0);
}

// implementation
#include "MainWindow.h"
#include <QTimer>

class MainWindowPrivate {
public:
  QTimer timer;
}

MainWindow::MainWindow(QWidget * parent, Qt::WindowFlags flags) :
  QMainWindow(parent, flags),
  d_ptr(new(MainWindowPrivate())
{
  Q_D(MainWindow);
  d->timer.start( ... );
  ...
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25234684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档