例如,下面是我的代码
QScopedPointer<QTimer> timer2(new QTimer);但我想定义一下
QScopedPointer<QTimer> timer2; 并创建一个实例。
timer2(new QTimer);在mainwindow.cpp中
多么?
发布于 2014-08-11 05:43:58
尝试以下几点:
// 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++中的初始化列表和QScopedPointer的文档。
发布于 2014-08-11 05:43:14
使用方法reset of QScopedPointer
timer2.reset(new QTimer());发布于 2014-08-11 14:18:16
你所做的一切等于是过早的悲观。在堆中单独创建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()
{
...
}当然,您通常不希望在接口(头)文件中公开MainWindow实现的所有细节。
// 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( ... );
...
}https://stackoverflow.com/questions/25234684
复制相似问题