1

很快:当我将鼠标拖到 MS Windows7(64 位)中的 QPushButton 上时,我的应用程序会占用一些内存。但是,如果我关闭按钮所在的小部件,则将返回内存。

我将 qt5 beta 2 和 VC++ 与 crtdbg.h 一起使用。

这是我的测试应用程序(启动,打开widget2并将鼠标拖到其上的按钮上。同时查看任务管理器。)

//-- widget1.h
class Widget1 : public QWidget
{
 Q_OBJECT
private:
 void callWidget2();
public:
 Widget1(QWidget* parent = 0);
 ~Widget1() {}

};

//-- widget1.cpp
Widget1::Widget1(QWidget* parent)
 :QWidget(parent)
{
 QPushButton* btn = new QPushButton(this);
 btn->setText("show widget2");
 connect(btn, &QPushButton::clicked, this, &Widget1::callWidget2);

 this->resize(100, 100);

 this->show();
}

void Widget1::callWidget2()
{
 new Widget2();
}

//-- widget2.h
class Widget2 : public QWidget
{
 Q_OBJECT
private:

public:
 Widget2(QWidget* parent = 0);
 ~Widget2() {}

};

//-- widget2.cpp
Widget2::Widget2(QWidget* parent)
 :QWidget(parent)
{
 this->setAttribute(Qt::WA_DeleteOnClose);
 this->resize(300, 300);

 QPushButton* button = new QPushButton(this);
 button->setText("btn1");

 button = new QPushButton(this);
 button->setText("btn2");
 button->move(0, 20);

 button = new QPushButton(this);
 button->setText("btn3");
 button->move(0, 40);

 button = new QPushButton(this);
 button->setText("btn4");
 button->move(0, 60);

 button = new QPushButton(this);
 button->setText("btn5");
 button->move(0, 80);

 this->show();
}

//-- main.cpp
int main(int argc, char *argv[])
{
 QApplication a(argc, argv);

 new Widget1;

 return a.exec();
}

这是拖了5分钟的结果。在此处输入图像描述

我不能在 windows XP 32bit 上重复这个。

这是什么?

4

0 回答 0