很快:当我将鼠标拖到 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 上重复这个。
这是什么?