0
我有一个从QGLWidget派生的图像显示小部件。我遇到的问题是这个小部件的初始创建需要超过3秒。这会在选择要查看的图像和看到窗口之间出现明显的延迟。任何人都可以告诉我是什么原因导致了这种大规模的延迟,并且我能以任何方式避免它?为什么我的qglwidget的子类需要3秒钟才能构建?
我已经简化我的代码于该例子:
class ImageDisplayTest : public QGLWidget
{
Q_OBJECT
public:
ImageDisplayTest(QWidget *parent = 0)
: QGLWidget(parent)
{
// empty constructor body
}
protected:
virtual void initializeGL() {}
virtual void paintGL() {}
virtual void resizeGL(int width, int height) {}
};
QElapsedTimer timer;
qint64 time_ms;
timer.start();
ImageDisplayTest* pTest1 = new ImageDisplayTest();
time_ms = timer.elapsed();
timer.restart();
ImageDisplayTest* pTest2 = new ImageDisplayTest();
time_ms = timer.elapsed();
timer.restart();
ImageDisplayTest* pTest3 = new ImageDisplayTest();
time_ms = timer.elapsed();
timer.restart();
ImageDisplayTest* pTest4 = new ImageDisplayTest();
time_ms = timer.elapsed();
实例pTest1是3200ms,并采取下一个3个项目的时间所需要的时间大约是950ms每。我正在使用Qt 4.7.4在Windows 7上运行,并使用Visual Studio 2012(快速版)进行编译和运行。为了比较,如果我从QWidget而不是QGLWidget派生,那么实例化所花费的时间会回到0毫秒(即太小而无法测量)。