間もなく:MS Windows7(64ビット)でQPushButtonの上にマウスをドラッグすると、アプリがメモリを消費します。しかし、ボタンがあるウィジェットを閉じると、メモリが返されます。
私はcrtdbg.hでqt5ベータ2とVC++を使用しています。
これが私のテストアプリです(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分間ドラッグした結果です。
WindowsXP32ビットではこれを繰り返すことはできません。
これは何ですか?