Qt 稍后创建QScopedPointer的实例

Qt 稍后创建QScopedPointer的实例,qt,pointers,qscopedpointer,Qt,Pointers,Qscopedpointer,例如,这里是我的代码 QScopedPointer<QTimer> timer2(new QTimer); 在mainwindow.cpp中 如何使用?使用QScopedPointer的方法重置 timer2.reset(new QTimer()); 请尝试以下操作: // mainwindow.h class MainWindow : public QMainWindow { private: QScopedPointer<QTimer> timer2; }

例如,这里是我的代码

QScopedPointer<QTimer> timer2(new QTimer);
在mainwindow.cpp中


如何使用?

使用QScopedPointer的方法
重置

timer2.reset(new QTimer());
请尝试以下操作:

// mainwindow.h
class MainWindow : public QMainWindow
{
private:
    QScopedPointer<QTimer> timer2;
};
// mainwindow.cpp
MainWindow::MainWindow()
    :timer2(new QTimer)
{
}
或者,如果要在
MainWindow
的任意成员函数中创建实例,请使用以下命令:

// mainwindow.cpp
void MainWindow::someFunction()
{
    timer2.reset(new QTimer);
}

也值得回顾C++中的初始化列表和./p>< P>的文档。您在堆上分别创建
MainWindow
类的成员,而您只需将它们作为成员放入类中:

// 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()
{
  ...
}

你根本不需要这样做。只需将
QTimer
作为您的
main窗口
类中的成员。您好,亲爱的RA。谢谢你的回复。为我工作!(+1,最好的答案是马克)(+1)你好,亲爱的埃西。谢谢
// mainwindow.cpp
void MainWindow::someFunction()
{
    timer2.reset(new QTimer);
}
// 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()
{
  ...
}
// 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( ... );
  ...
}