1

間もなく: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ビットではこれを繰り返すことはできません。

これは何ですか?

4

0 に答える 0